In chapter 4 di Erik Meijer su Fondamenti di programmazione funzionale, scrive in sostanza:definire manualmente combinazione booleana
True &&& x | x == True = True
| x == False = False
Non è questo inutilmente verboso? Non potrei solo scrivere:
True &&& x = x
o anche:
(&&&) True = id
(&&&) False = const False
A proposito, come mai non riesco a scrivere la seguente?
(True &&&) = id
(False &&&) = const False
ghci risponde con:
Parse error in pattern: True &&&
N.B. Penso che * puoi * scriverlo come '(&&)' in uno schema. Quindi '(&&) True = id' potrebbe funzionare. –
Sì, ma (&&) non è una sezione, ma la forma di prefisso di un operatore infisso, penso. –
@Erik Hesselink yes, ma non c'è differenza semantica tra "un operatore prefisso" e "una sezione a doppia faccia". Il linguaggio consente solo una sintassi quando si definiscono gli operatori e non l'altro. – Carl