2014-12-04 153 views
0

我有一个数据,如:修改列表的列表OCaml中

3 11 12 
15 13 14 15 

我从文件的阅读:

let print data = 
    List.iter (fun l -> printf "%[email protected]" (String.concat " " l)) data 

let read filename = 
let ch = open_in filename in 
let data = Lexer.lex [] (Lexing.from_channel ch) in 
close_in ch; 
print data 

出放为

3 11 12 
15 13 14 15 

- >它是一个列表中的列表

而我的问题是当我wa nt修改列表中的列表,它不起作用。例如:

let remove = function 
    h :: t -> t 
;; 
let print data = 
     List.iter (fun l -> remove l; printf "%[email protected]" (String.concat " " l)) data 

请帮我解决它。 谢谢你这么多

回答

0

移动删除呼叫:

let print data = 
    List.iter (fun l -> printf "%[email protected]" (String.concat " " (remove l))) data 
+0

谢谢你,这是工作。我可以问为什么? – vent 2014-12-04 18:42:28

+1

删除l不修改l,它返回一个列表。其他的一点:函数remove是来自标准lib的List.tl - 你的remove函数不会在我的结尾编译(不是全部匹配)。 – 2014-12-04 18:48:36