diff options
| author | Joel Martin <github@martintribe.org> | 2014-04-23 21:59:50 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2014-04-23 21:59:50 -0500 |
| commit | 6301e0b6374cecc5599665be14d6ddc6a31ce1e8 (patch) | |
| tree | dbf1dc2ff6c682fd87c72a7907e7f6e59c8d4c03 /ps | |
| parent | 89bd4de1e2704c1bc562788b2c5e4fc08b71a538 (diff) | |
| download | mal-6301e0b6374cecc5599665be14d6ddc6a31ce1e8.tar.gz mal-6301e0b6374cecc5599665be14d6ddc6a31ce1e8.zip | |
All: TCO let* and quasiquote.
Diffstat (limited to 'ps')
| -rw-r--r-- | ps/step5_tco.ps | 4 | ||||
| -rw-r--r-- | ps/step6_file.ps | 4 | ||||
| -rw-r--r-- | ps/step7_quote.ps | 8 | ||||
| -rw-r--r-- | ps/step8_macros.ps | 8 | ||||
| -rw-r--r-- | ps/step9_interop.ps | 8 | ||||
| -rw-r--r-- | ps/stepA_more.ps | 8 |
6 files changed, 30 insertions, 10 deletions
diff --git a/ps/step5_tco.ps b/ps/step5_tco.ps index c1698d6..83fd43b 100644 --- a/ps/step5_tco.ps +++ b/ps/step5_tco.ps @@ -65,7 +65,9 @@ end } def env_set pop % discard the return value } for - a2 let_env EVAL + a2 + let_env + /loop? true def % loop }{ /do a0 eq { %if do ast _count 2 gt { %if ast has more than 2 elements ast 1 ast _count 2 sub _slice env eval_ast pop diff --git a/ps/step6_file.ps b/ps/step6_file.ps index 00598be..7d1c876 100644 --- a/ps/step6_file.ps +++ b/ps/step6_file.ps @@ -65,7 +65,9 @@ end } def env_set pop % discard the return value } for - a2 let_env EVAL + a2 + let_env + /loop? true def % loop }{ /do a0 eq { %if do ast _count 2 gt { %if ast has more than 2 elements ast 1 ast _count 2 sub _slice env eval_ast pop diff --git a/ps/step7_quote.ps b/ps/step7_quote.ps index 10c8089..d7340fd 100644 --- a/ps/step7_quote.ps +++ b/ps/step7_quote.ps @@ -93,11 +93,15 @@ end } def env_set pop % discard the return value } for - a2 let_env EVAL + a2 + let_env + /loop? true def % loop }{ /quote a0 eq { %if quote ast 1 _nth }{ /quasiquote a0 eq { %if quasiquote - ast 1 _nth quasiquote env EVAL + ast 1 _nth quasiquote + env + /loop? true def % loop }{ /do a0 eq { %if do ast _count 2 gt { %if ast has more than 2 elements ast 1 ast _count 2 sub _slice env eval_ast pop diff --git a/ps/step8_macros.ps b/ps/step8_macros.ps index 74cf50f..3bf304c 100644 --- a/ps/step8_macros.ps +++ b/ps/step8_macros.ps @@ -126,11 +126,15 @@ end } def env_set pop % discard the return value } for - a2 let_env EVAL + a2 + let_env + /loop? true def % loop }{ /quote a0 eq { %if quote ast 1 _nth }{ /quasiquote a0 eq { %if quasiquote - ast 1 _nth quasiquote env EVAL + ast 1 _nth quasiquote + env + /loop? true def % loop }{ /defmacro! a0 eq { %if defmacro! /a1 ast 1 _nth def /a2 ast 2 _nth def diff --git a/ps/step9_interop.ps b/ps/step9_interop.ps index 4f324d5..de3d2af 100644 --- a/ps/step9_interop.ps +++ b/ps/step9_interop.ps @@ -126,11 +126,15 @@ end } def env_set pop % discard the return value } for - a2 let_env EVAL + a2 + let_env + /loop? true def % loop }{ /quote a0 eq { %if quote ast 1 _nth }{ /quasiquote a0 eq { %if quasiquote - ast 1 _nth quasiquote env EVAL + ast 1 _nth quasiquote + env + /loop? true def % loop }{ /defmacro! a0 eq { %if defmacro! /a1 ast 1 _nth def /a2 ast 2 _nth def diff --git a/ps/stepA_more.ps b/ps/stepA_more.ps index 744a092..76d0a86 100644 --- a/ps/stepA_more.ps +++ b/ps/stepA_more.ps @@ -126,11 +126,15 @@ end } def env_set pop % discard the return value } for - a2 let_env EVAL + a2 + let_env + /loop? true def % loop }{ /quote a0 eq { %if quote ast 1 _nth }{ /quasiquote a0 eq { %if quasiquote - ast 1 _nth quasiquote env EVAL + ast 1 _nth quasiquote + env + /loop? true def % loop }{ /defmacro! a0 eq { %if defmacro! /a1 ast 1 _nth def /a2 ast 2 _nth def |
