在Num模块中表示无穷大

时间:2016-10-03 12:50:29

标签: ocaml infinity

Num模块中,有人说:

  

Numbers(类型num)是任意精度有理数,加上特殊元素1/0(无穷大)和0/0(未定义)。

我希望找到这个infinity,但无法找到它。那么我猜,我可以手工制作它:

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

但是屁股:

  

异常:失败" create_ratio无限或未定义的有理数"。

所以,好吧,Pervasives中有val infinity : float,让我们找到num_from_float。哦,没有这样的功能......

嗯,有没有人知道如何用Num代表正面和负面无限?

1 个答案:

答案 0 :(得分:3)

默认情况下,禁用特殊号码。可以使用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