Dadas las siguientes definiciones:
twice f = f ◦ f
inf = 1 + inf
f :: Int → Bool
f x = ((twice twice (+2)) x − curry snd inf 7 == fst (4, inf )) ∧ (x > inf )
Decir cual respuesta es válida:
(a) f x diverge para todo x
(b) f 4 evalua a False
(c) f 3 evalua a False
(d) La funcion no compila correctamente
Respuesta: b)
No estoy entendiendo este ejercicio, ya que para mi la respuesta correcta es la d) por lo siguiente:
((twice twice (+2)) x − curry snd inf 7 == fst (4, inf )) da algo de tipo Bool y (x > inf ) tambien es algo de tipo Bool, luego se hace el ^ de ambas, pero el ^ no es una operación para Bool, entonces no debería compilar..
Incluso viendo las opciones b y c,
((twice twice (+2)) x − curry snd inf 7 == fst (4, inf ))
para la opción b da (8-7==4) = False y luego debería hacer False ^ (4>inf)
para la opción c) da (7-7== 4) = False y luego debería hacer False ^ (3>inf)
Que estoy haciendo mal?