Проблема с сопоставлением с образцом в ocaml - PullRequest
5 голосов
/ 29 декабря 2010

Я написал функцию, используемую для декомпозиции булевой функции, проблема в том, что при компиляции я получаю следующее: «Предупреждение 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 Ответ

8 голосов
/ 29 декабря 2010

decomposition state_init new_state state f1 имеет тип unit -> unit (потому что вы возвращаете fun () -> ...).Поэтому, если вы просто так его называете, он ничего не будет делать.

Вы должны либо назвать его как decomposition state_init new_state state f1 (), либо удалить бит fun () ->, чтобы аргумент единицы не был необходим.

...