ocaml中模式匹配的问题

时间:2010-12-28 21:23:36

标签: functional-programming pattern-matching ocaml

我编写了用于分解布尔函数的函数,问题是我得到的编译:“警告5:这个函数应用程序是部分的,可能有些参数丢失了。” 我怎么解决这个问题?我设置了错误的模式匹配,或者我无法使用模式匹配来运行此操作

代码如下:

         let rec decomposition state_init state prec formula =        
            match formula with        
            And form -> (fun () -> 
                    let f1 = List.hd form in
                    let f2 = And(List.tl form )in                      

                    let new_state = Forms (state_init,f1) in

                    decomposition state_init new_state state f1;            

                    decomposition state_init new_state state f2;

                    Hashtbl.add graph new_state (("",false,state :: []) , []) ;

                    let x = Hashtbl.find graph state in
                    let succ = state :: snd x in
                    let (desc,last,ptrs) = fst x in

                    Hashtbl.replace graph state ( ("And-node",last,ptrs) , succ))   

1 个答案:

答案 0 :(得分:8)

decomposition state_init new_state state f1的类型为unit -> unit(因为您正在返回fun () -> ...)。所以,如果你这样称呼它,它将不会做任何事情。

您必须将其称为decomposition state_init new_state state f1 (),或删除fun () ->位,因此不需要单位参数。