这是使用 Zarith 图书馆的有效方式吗

Is this a valid way to use the Zarith Library

我想知道 Printf.printf "%d \n" Z.(s1 num2) 是否是使用 Zarith 库的有效方法。 不知道是否需要更多上下文,但是函数 s1 是关于 Schroder 序列的,当我使用大于 25 的数字时,它不会显示任何数字(因为数字太大了吧?那是 Zarith进入)但我不确定它是否真的有效。

我将 Zarith 加载到我的 OCaml 顶层(OCaml 的 REPL)。如果我尝试你提供的,这是我看到的:

# Printf.printf "%d\n" Z.(s1 num2);;
Error: Unbound value s1

这是有道理的,在Z模块(Zarith的大整数模块)中没有名为s1的符号。如果您对 s1 有自己的定义,则必须显示其定义以获得帮助。

如果要打印出一个大整数,则不能将其打印为整数(%d 格式)。您必须转换为字符串并打印出来。这是打印出 2 ^ 101:

的顶层会话
# #load "zarith.cma";;
# #load "zarith_top.cma";;
# let big = Z.(of_int 1 lsl 101);;
val big : Z.t = 2535301200456458802993406410752
# Printf.printf "{{%s}}" (Z.to_string big);;
{{2535301200456458802993406410752}}- : unit = ()