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.

Respuestas a la pregunta(6)

Su respuesta a la pregunta