2017-10-21 35 views
-1

J'ai l'erreur suivante, gardée à l'esprit que "Booleano" correspond à un type défini par l'utilisateurHaskell- Aucune instance pour (Foldable ((->) [Type]) résultant d'une utilisation de 'null'

Prop.hs:173:28: error: 
    • No instance for (Foldable ((->) [Booleano])) 
     arising from a use of ‘null’ 
    • In the first argument of ‘(==)’, namely ‘(null aux2)’ 
     In the expression: ((null aux2) == True) 
     In the expression: 
     if ((null aux2) == True) then Falso else Verdadero 
Prop.hs:184:16: error: 
    • No instance for (Eq Booleano) arising from a use of ‘==’ 
    • In the expression: x == Falso 
     In an equation for ‘comparador2’: comparador2 x = x == Falso* 

Im travaillant avec ce code:.

type Estados = [(String,Booleano)] 

esTautologia :: Prop -> [Estados] -> Booleano 
esTautologia p est = if (null aux2 == True) then 
       Falso 
        else 
       Verdadero 
aux :: Prop -> [Estados] -> [Booleano] 
aux p est= map (interp p) est 

aux2:: [Booleano] -> [Booleano] 
aux2= filter comparador2 aux 

comparador2:: Booleano -> Bool 
comparador2 x= x == Falso 

le type Prop ce soit pour des arguments logiques, donc, Prop est pas un problème clé Merci pour l'aide, si vous avez besoin une autre especification, s'il vous plaît dites-moi

+0

est 'aux2' censé être une fonction ou une liste? Vous l'avez défini comme une fonction, mais vous n'utilisez aucun paramètre, et il est écrit comme si 'aux' est une liste que vous pourriez' filter', alors qu'en fait 'aux' est une fonction. – 4castle

+0

C'est une fonction, mais je veux utiliser la liste résultante dans une autre fonction. –

Répondre

0

Depuis filter a le type (a -> Bool) -> [a] -> [a] votre définition de aux2 semble étrange. Le deuxième argument à filter est une liste simple, pas une fonction (aux dans votre cas). Soit vous avez besoin de plus d'arguments pour aux ou de sauter aux pour obtenir les bons types:

aux2 :: Prop -> [Estados] -> [Booleano] 
aux2 a b = filter comparador2 (aux a b) 


aux2 :: [Booleano] -> [Booleano] 
aux2 = filter comparador2