Domanda

È possibile codificare vari tipi nel calcolo Lambda non titole attraverso funzioni di ordine superiore.

Examples:
zero  = λfx.      x
one   = λfx.     fx
two   = λfx.   f(fx)
three = λfx. f(f(fx))
etc

true  = λtf. t
false = λtf. f

tuple = λxyb. b x y
null  = λp. p (λxy. false)

Mi chiedevo se qualche ricerca sia andata a incorporare altri tipi meno convenzionali. Sarebbe geniale se esiste un teorema che afferma che qualsiasi tipo può essere incorporato. Forse ci sono restrizioni, ad esempio solo tipi di tipo * possono essere incorporati.

Se è davvero possibile rappresentare tipi meno convenzionali, sarebbe fantastico vedere un esempio. Sono particolarmente entusiasta di vedere come sono i membri della classe di tipo Monad.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top