Skip to content

Commit 3c23f34

Browse files
committed
move krivine to src
1 parent 1da22ab commit 3c23f34

File tree

5 files changed

+45
-42
lines changed

5 files changed

+45
-42
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@
1616
"jakubledl/dissect": "dev-develop"
1717
},
1818
"autoload": {
19-
"files": ["src/eval.php", "src/parser.php"]
19+
"files": ["src/eval.php", "src/parser.php", "src/krivine.php"]
2020
}
2121
}

composer.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

examples/krivine.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
namespace igorw\lambda\krivine;
4+
5+
require 'vendor/autoload.php';
6+
7+
// ['λ', 1]
8+
$identity = ['λ', 'x', 'x'];
9+
10+
// λ λ 2
11+
$k = ['λ', 'x', ['λ', 'y', 'x']];
12+
13+
// λ λ λ 3 1 (2 1)
14+
$s = ['λ', 'x', ['λ', 'y', ['λ', 'z', [['x', 'z'], ['y', 'z']]]]];
15+
16+
// λ (λ 1 (λ 1)) (λ 2 1)
17+
$x = ['λ', 'z', [['λ', 'y', ['y', ['λ', 'x', 'x']]], ['λ', 'x', ['z', 'x']]]];
18+
19+
// omega: loops forever
20+
// (λf.f f) (λf.f f)
21+
$omega = [['λ', 'f', ['f', 'f']], ['λ', 'f', ['f', 'f']]];
22+
23+
// var_dump(de_bruijn($identity));
24+
// var_dump(de_bruijn($k));
25+
// var_dump(de_bruijn($s));
26+
// var_dump(de_bruijn($x));
27+
// var_dump(compile(de_bruijn($identity)));
28+
// var_dump(evaluate([
29+
// ['constant', 5],
30+
// ['stop'],
31+
// ]));
32+
// var_dump(de_bruijn(
33+
// [[['λ', 'x', ['λ', 'y', 'y']], 5], 6]
34+
// ));
35+
// var_dump(compile(de_bruijn(
36+
// [[['λ', 'x', ['λ', 'y', 'y']], 5], 6]
37+
// )));
38+
// var_dump(evaluate(compile(de_bruijn(
39+
// [[['λ', 'x', ['λ', 'y', 'y']], 5], 6]
40+
// ))));
41+
// var_dump(evaluate(compile(de_bruijn([$identity, 42]))));
42+
// var_dump(evaluate(compile(de_bruijn([$k, 42]))));
43+
// var_dump(evaluate(compile(de_bruijn($omega))));

krivine.php renamed to src/krivine.php

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
use iter;
66

7-
require 'vendor/autoload.php';
8-
97
// (M N, S, E) → (M, (S,(N,E)), E)
108
// (λM, (S,N), E) → (M, S, (E,N))
119
// (i+1, S, (E,N)) → (i, S, E)
@@ -180,41 +178,3 @@ function evaluate(array $ops)
180178
$vm = new Machine($ops, [], []);
181179
return $vm->execute();
182180
}
183-
184-
// ['λ', 1]
185-
$identity = ['λ', 'x', 'x'];
186-
187-
// λ λ 2
188-
$k = ['λ', 'x', ['λ', 'y', 'x']];
189-
190-
// λ λ λ 3 1 (2 1)
191-
$s = ['λ', 'x', ['λ', 'y', ['λ', 'z', [['x', 'z'], ['y', 'z']]]]];
192-
193-
// λ (λ 1 (λ 1)) (λ 2 1)
194-
$x = ['λ', 'z', [['λ', 'y', ['y', ['λ', 'x', 'x']]], ['λ', 'x', ['z', 'x']]]];
195-
196-
// omega: loops forever
197-
// (λf.f f) (λf.f f)
198-
$omega = [['λ', 'f', ['f', 'f']], ['λ', 'f', ['f', 'f']]];
199-
200-
// var_dump(de_bruijn($identity));
201-
// var_dump(de_bruijn($k));
202-
// var_dump(de_bruijn($s));
203-
// var_dump(de_bruijn($x));
204-
// var_dump(compile(de_bruijn($identity)));
205-
// var_dump(evaluate([
206-
// ['constant', 5],
207-
// ['stop'],
208-
// ]));
209-
// var_dump(de_bruijn(
210-
// [[['λ', 'x', ['λ', 'y', 'y']], 5], 6]
211-
// ));
212-
// var_dump(compile(de_bruijn(
213-
// [[['λ', 'x', ['λ', 'y', 'y']], 5], 6]
214-
// )));
215-
// var_dump(evaluate(compile(de_bruijn(
216-
// [[['λ', 'x', ['λ', 'y', 'y']], 5], 6]
217-
// ))));
218-
// var_dump(evaluate(compile(de_bruijn([$identity, 42]))));
219-
// var_dump(evaluate(compile(de_bruijn([$k, 42]))));
220-
// var_dump(evaluate(compile(de_bruijn($omega))));

0 commit comments

Comments
 (0)