2014-12-04 108 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