2012-01-03 58 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