2010-12-28 3 views
5

J'ai écrit la fonction utilisée pour décomposer une fonction booléenne, le problème est que la compilation est la suivante: "Attention 5: cette application de fonction est partielle, peut-être que certains arguments manquent." Comment puis-je résoudre ce problème? Je l'ai mal réglé la mise en correspondance de bagout ou je ne peux pas exécuter cette opération avec un motif correspondant àProblème de correspondance de motif dans ocaml

Le code est le suivant:

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

Répondre

8

decomposition state_init new_state state f1 est de type unit -> unit (parce que vous êtes de retour fun() -> ...). Donc, si vous l'appelez comme ça, ça ne fera rien.

Vous devez l'appeler decomposition state_init new_state state f1() ou supprimer le bit fun() ->, l'argument d'unité n'est donc pas nécessaire.

Questions connexes