2017-12-01 20 views
2

Soweit ich weiß, können wir den if-Zweig und die Rekursion in eifriger Auswertung nicht auf die gleiche Weise wie bei der Normalwert-Auswertung codieren.If-Verzweigung und Rekursion in eifriger Auswertung codieren

Zum Beispiel in Lambda-Kalkül if-Zweig und faktorielle (fac) können

if e1 e2 e3 = e1 e2 e3 
fac = Y(λf.λn. if n=0 1 n*f(n-1)) 
Y = λf.(λx. f(xx))(λx. f(xx)) 

codiert werden Können wir die if-Zweig und Rekursion in eifrig Auswertung kodieren? Wenn wir wissen können, wie sollten wir If-Zweig und Fakultät in eifrigen Auswertung mit Lambda-Kalkül zu kodieren.

Antwort

0

wrap sie beide in einem lambda, das sein argument ignoriert, dann wenn er den zweig wählen kann, indem er es zwingt, etwas Dummy-Wert übergibt.

So kann es geschehen, aber nur, wenn ‚wenn‘ ist wie folgt verwendet: if e1 (λ_.e2) (λ_.e3)

+0

Danke für Antwort! :) Es hilft wirklich. –