@@ -59,18 +59,12 @@ function de_bruijn($exp, $indices = [])
5959 return ['offset ' , $ indices [$ exp ]];
6060 }
6161
62- // if ('offset' === first($exp)) {
63- // return $exp;
64- // }
65-
6662 if ('λ ' === first ($ exp )) {
6763 list ($ _ , $ arg , $ body ) = $ exp ;
6864
6965 $ indices = inc_indices ($ indices );
7066 $ indices = assoc ($ indices , $ arg , 1 );
7167
72- // echo 'body: '.json_encode($body, JSON_UNESCAPED_UNICODE)."\n";
73-
7468 return ['λ ' , de_bruijn ($ body , $ indices )];
7569 }
7670
@@ -193,6 +187,10 @@ function evaluate(array $ops)
193187// λ (λ 1 (λ 1)) (λ 2 1)
194188$ x = ['λ ' , 'z ' , [['λ ' , 'y ' , ['y ' , ['λ ' , 'x ' , 'x ' ]]], ['λ ' , 'x ' , ['z ' , 'x ' ]]]];
195189
190+ // omega: loops forever
191+ // (λf.f f) (λf.f f)
192+ $ omega = [['λ ' , 'f ' , ['f ' , 'f ' ]], ['λ ' , 'f ' , ['f ' , 'f ' ]]];
193+
196194// var_dump(de_bruijn($identity));
197195// var_dump(de_bruijn($k));
198196// var_dump(de_bruijn($s));
@@ -211,4 +209,6 @@ function evaluate(array $ops)
211209// var_dump(evaluate(compile(de_bruijn(
212210// [[['λ', 'x', ['λ', 'y', 'y']], 5], 6]
213211// ))));
214- // var_dump(evaluate(compile([de_bruijn($identity), 42])));
212+ // var_dump(evaluate(compile(de_bruijn([$identity, 42]))));
213+ // var_dump(evaluate(compile(de_bruijn([$k, 42]))));
214+ // var_dump(evaluate(compile(de_bruijn($omega))));
0 commit comments