En chapter 4 de Erik Meijer en los fundamentos de la programación funcional, que esencialmente escribe:definir manualmente junto booleano
True &&& x | x == True = True
| x == False = False
¿No es esto innecesariamente prolijo? ¿No podría escribir:
True &&& x = x
o incluso:
(&&&) True = id
(&&&) False = const False
Por cierto, ¿cómo es que no puedo escribir lo siguiente?
(True &&&) = id
(False &&&) = const False
ghci responde con:
Parse error in pattern: True &&&
N.B. Creo que * puedes * escribirlo como '(&&)' en un patrón. Entonces '(&&) True = id' podría funcionar. –
Sí, pero (&&) no es una sección, pero la forma de prefijo de un operador infijo, creo. –
@ Erik Hesselink sí, pero no hay diferencia semántica entre "un operador de prefijo" y "una sección de doble faz". El lenguaje solo permite una sintaxis al definir operadores, y no el otro. – Carl