(*redefining the power function for integers*)
let rec ( ** ) v n = if n = 0 then 1 else v * (( ** ) v (n-1));;
let rec sommation n =
if n = 0 then 0 else -1**(n/3) * n**(2+ (-1)**n) + sommation (n-1);;
print_int (sommation 7);;
当我在VS Code中选择所有代码行然后按Ctrl + Enter来运行上面的程序时,终端中显示的内容如下:
└──────────────────────────────────────────────────────────────┘
Type #utop_help for help about using utop.
─( 17:07:51 )─< command 0 >───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─utop # (*redefining the power function for integers*)
let rec ( ** ) v n = if n = 0 then 1 else v * (( ** ) v (n-1));;
val ( ** ) : int -> int -> int = <fun>
─( 17:07:51 )─< command 1 >───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─utop #
let rec sommation n =
if n = 0 then 0 else -1**(n/3) * n**(2+ (-1)**n) + sommation (n-1);;
val sommation : int -> int = <fun>
─( 17:07:54 )─< command 2 >───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─utop #
print_int (sommation 7);;
160- : unit = ()
─( 17:07:54 )─< command 3 >───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────{ counter: 0 }─
正如您所看到的,它一行接一行地显示我的程序,这使得显示160的输出需要很长时间
如何解决此问题?
1条答案
按热度按时间vhipe2zx1#
一旦你开始编写大型程序而不是在顶层测试简短的代码片段,将它们保存为文件并执行该文件可能是有意义的。如果你超过了一个文件,你可能应该研究使用Dune来管理构建过程。
考虑一下你的例子,我们将其放入一个文件
test.ml
中,而不是一堆由;;
标记分隔的表达式。在程序中,你的最后一个表达式是无效的,在程序的顶层,我们不能有裸表达式,所以我们把它绑定到
()
。现在,您可以在shell中将其作为
ocaml test.ml
执行,或者使用ocamlc或ocamlopt编译它。