2010-12-28 12 views
5

Escribí la función utilizada para descomponer una función booleana, el problema es que la compilación lo obtengo: "Advertencia 5: esta aplicación de función es parcial, tal vez falten algunos argumentos". ¿Cómo puedo resolver este problema? He puesto mal la coincidencia de golpeteo o No puedo ejecutar esta operación con la coincidencia de patronesProblema con la coincidencia de patrones en ocaml

el código es el siguiente:

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

Respuesta

8

decomposition state_init new_state state f1 tiene tipo unit -> unit (porque usted está volviendo fun() -> ...). Entonces, si lo llamas así, no hará nada.

O bien tiene que llamarlo como decomposition state_init new_state state f1(), o eliminar el bit fun() ->, por lo que el argumento de unidad no es necesario.

Cuestiones relacionadas