Truth Tables from Anonymous Functions in Haskell
Estoy tratando de generar una tabla de verdad para una expresión booleana dada. Podría hacer esto creando un nuevo Datatype BoolExpr, pero quiero hacerlo con una función anónima. Se supone que funciona así:
> tTable (\x y -> not (x || y))
output:
F F | T
F T | F
T F | F
T T | F
Mi acercamiento
tbl p = [(uncurry p) tuple | tuple <- allval]
where allval=[(x,y) | x <- [False,True], y <- [False,True]]
Esto funciona, pero solo para 2 argumentos. Quiero hacerlo para cualquier número de argumentos. Entonces pensé que haría una función que tomara los Argumentos de una Lista:
argsFromList f [] = f
argsFromList f (x:xs) = argsFromList (f x) xs
Esto no funciona
Occurs check: cannot construct the infinite type: t = t1 -> t
Expected type: t -> [t1] -> t1 -> t
Inferred type: (t1 -> t) -> [t1] -> t1 -> t
In the expression: argsFromList (f x) xs
No entiendo cuál es el problema aquí. Estaría muy agradecido si alguien pudiera señalarme en la dirección correcta o publicar un enlace que lo haga.