Question

De Wikipédia:

$ mathrm {true} = lambda a. lambda b. un $
$ mathrm {false} = lambda a. lambda b. b $

Parce que True et False choisissent le premier ou le deuxième paramètre, ils peuvent être combinés pour fournir des opérateurs logiques. Notez qu'il existe deux versions de Not, selon la stratégie d'évaluation choisie.

$ mathrm {et} = lambda p. lambda q. p , q , p $
$ mathrm {ou} = lambda p. lambda q. p , p , q $

$ mathrm {pas} _a = lambda p. lambda a. lambda b. p , b , a $ (Ce n'est qu'une mise en œuvre correcte si la stratégie d'évaluation est un ordre applicatif.)

$ mathrm {pas} _n = lambda p. p , ( lambda a. lambda b. b) , ( lambda a. lambda b. a) = lambda p. p , mathrm {false} , ⁡ mathrm {true} ⁡ $ (Ce n'est qu'une mise en œuvre correcte si la stratégie d'évaluation est un ordre normal.)

Je sais ce que l'ordre applicatif et l'ordre normal sont (évaluation désireuse par rapport à l'évaluation paresseuse des arguments aux fonctions). Mais je ne comprends pas pourquoi les deux NOT ne fonctionnent pas dans ces deux stratégies d'évaluation.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top