在 Num 模块中表示无穷大

Represent infinity in the Num module

Num模块中,表示:

Numbers (type num) are arbitrary-precision rational numbers, plus the special elements 1/0 (infinity) and 0/0 (undefined).

我希望找到这个 infinity 但找不到。然后,我猜我可以手动创建它:

let infinity = let one = Int 1 and zero = Int 0 in one // zero

但是流浪汉:

Exception: Failure "create_ratio infinite or undefined rational number".

所以,好吧,Pervasives 里有这个val infinity : float,我们找一个num_from_float。哦,没有这个功能...

嗯,有谁知道如何用 Num 表示正无穷大和负无穷大吗?

默认情况下,特殊号码被禁用。这个行为可以用 Arith_status 模块来控制。例如,要允许零分母,请使用以下内容:

Arith_status.set_error_when_null_denominator false

设置标志后,您的无限定义工作正常:

let infinity = let one = Int 1 and zero = Int 0 in one // zero;;
val infinity : Num.num = <num 1/0>
float_of_num infinity;;
- : float = infinity