2010-12-28 15 views
5

Ho scritto la funzione utilizzata per decomporre una funzione booleana, il problema è che la compilazione ottengo questo: "Avviso 5: questa applicazione di funzione è parziale, forse mancano alcuni argomenti." Come posso risolvere questo problema? Ho impostato male la corrispondenza picchiettio o io non posso correre questa operazione con pattern matchingProblema con la corrispondenza del modello in ocaml

Il codice è il seguente:

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

risposta

8

decomposition state_init new_state state f1 è di tipo unit -> unit (perché si sta tornando fun() -> ...). Quindi se lo chiami così, non farà nulla.

È necessario chiamarlo come decomposition state_init new_state state f1() oppure rimuovere il fun() -> bit, quindi l'argomento unità non è necessario.

Problemi correlati