windows 如何在VS代码终端上只显示utop中的程序输出,而不是一个接一个地显示所有指令

q8l4jmvw  于 2023-01-31  发布在  Windows
关注(0)|答案(1)|浏览(128)
(*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的输出需要很长时间
如何解决此问题?

vhipe2zx

vhipe2zx1#

一旦你开始编写大型程序而不是在顶层测试简短的代码片段,将它们保存为文件并执行该文件可能是有意义的。如果你超过了一个文件,你可能应该研究使用Dune来管理构建过程。
考虑一下你的例子,我们将其放入一个文件test.ml中,而不是一堆由;;标记分隔的表达式。

(*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)

let () =
  print_int (sommation 7)

在程序中,你的最后一个表达式是无效的,在程序的顶层,我们不能有裸表达式,所以我们把它绑定到()
现在,您可以在shell中将其作为ocaml test.ml执行,或者使用ocamlc或ocamlopt编译它。

相关问题