2010-12-28 17 views
5

ブール関数を分解するための関数を書いたが、問題はコンパイル結果に「警告5:この関数のアプリケーションが部分的で、多少の引数がない」ということです。 この問題を解決するにはどうすればよいですか?ocamlのパターンマッチングに問題がある

  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)) 

答えて

8

decomposition state_init new_state state f1は型を持つunit -> unit(あなたがfun() -> ...を返しているので)次の私はパタパタマッチングを間違って設定しているか、私は

コードをパターンマッチングでこの操作を実行することはできませんです。だから、あなたがそのように呼び出すと、何もしません。

decomposition state_init new_state state f1()と呼び出すか、fun() ->ビットを削除する必要があります。そのため、unit引数は不要です。

関連する問題