繁体   English   中英

在ocaml中打印列表

[英]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的输出(出于性能原因)。

在使用Ocaml编码之前,您应该阅读Ocaml文档

您可能还想致电(从Pervasivesprint_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM