我编写了用于分解布尔函数的函数,问题是我得到的编译:“警告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))
答案 0 :(得分:8)
decomposition state_init new_state state f1
的类型为unit -> unit
(因为您正在返回fun () -> ...
)。所以,如果你这样称呼它,它将不会做任何事情。
您必须将其称为decomposition state_init new_state state f1 ()
,或删除fun () ->
位,因此不需要单位参数。