[英]Printing list in ocaml
我会写(用于调试)打印机以获取((string * string) * 'a)
我尝试了:
(* print a list of ((string * string) * 'a) *)
let rec print_list = function
[] -> Printf.printf "\n empty list \n %!"; ()
| ((s1,s2),a)::l -> Printf.printf "\n(s1,s2)= %s %s \n %!" s1 s2; print_list l;;
但它不会打印任何内容。
它应该至少打印empty list
,对不对?
在许多语言(C和Ocaml程序编写),你最好把\\n
在年底 printf
格式控制字符串,或强制刷新标准输出。 通常会缓冲对stdout的输出(出于性能原因)。
您可能还想致电(从Pervasives ) print_newline
; 仔细阅读Printf
模块的文档; 您可以用%!
结束printf
格式字符串%!
这是Ocaml 4.01的示例(从您已编辑的问题中复制):
% ocaml
OCaml version 4.01.0
# (* print a list of ((string * string) * 'a) *)
let rec print_list = function
[] -> Printf.printf "\n empty list \n %!"; ()
| ((s1,s2),a)::l -> Printf.printf "\n(s1,s2)= %s %s \n %!" s1 s2;
print_list l;;
val print_list : ((string * string) * 'a) list -> unit = <fun>
# print_list [];;
empty list
- : unit = ()
#
如您所见,将打印empty list
。 在上面的代码中, %
是shell提示符, #
是ocaml顶级提示符。 您的函数被逐字复制。 print_list [];;
在顶级输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.