2012-01-03 54 views
1

我想弄清楚爲什麼這不起作用,我得到錯誤:語法錯誤。我錯過了一個「;」某處?Ocaml:語法錯誤

let way_tags_to_hashtbl way = 
    let hashtbl = Hashtbl.create 1 in 
    let rec way_tags_to_hashtbl_partial list = match list with 
    | a::list' -> Hashtbl.add hashtbl (a.k, a.v); way_tags_to_hashtbl_partial list' 
    | a::[] -> Hashtbl.add hashtbl (a.k, a.v) 
    | [] -> []; 
    way_tags_to_hashtbl_partial way.wtag; hashtbl 
;; <------ ERROR HERE 

謝謝。

+1

附: 'let rec way_tags_to_hashtbl_partial list = match list with'可以寫成'let rec way_tags_to_hashtbl_partial = function' – newacct 2012-01-04 03:44:09

+0

pps因爲'a :: list''已經覆蓋了'a :: []'的情況,永遠不會到達 – newacct 2012-01-04 03:45:01

回答

4

我認爲你缺少一個in大約兩行了:

let way_tags_to_hashtbl way = 
    let hashtbl = Hashtbl.create 1 in 
    let rec way_tags_to_hashtbl_partial list = match list with 
    | a::list' -> Hashtbl.add hashtbl (a.k, a.v); way_tags_to_hashtbl_partial list' 
    | a::[] -> Hashtbl.add hashtbl (a.k, a.v) 
    | [] -> [] in (* !!! HERE !!! *) 
    way_tags_to_hashtbl_partial way.wtag; hashtbl 
;; 

我沒有ocaml的本機上安裝,無法檢查...

+0

謝謝你的工作!你真棒。 – Jane 2012-01-03 16:25:38

+0

@amadan:如果你想檢查一些ocaml代碼,你可以使用[online toplevel] [1],你不需要安裝任何東西。 [1]:http://try.ocamlpro.com/ – cago 2012-01-30 12:46:05