From 6301e0b6374cecc5599665be14d6ddc6a31ce1e8 Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Wed, 23 Apr 2014 21:59:50 -0500 Subject: All: TCO let* and quasiquote. --- ps/step5_tco.ps | 4 +++- ps/step6_file.ps | 4 +++- ps/step7_quote.ps | 8 ++++++-- ps/step8_macros.ps | 8 ++++++-- ps/step9_interop.ps | 8 ++++++-- ps/stepA_more.ps | 8 ++++++-- 6 files changed, 30 insertions(+), 10 deletions(-) (limited to 'ps') 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 -- cgit v1.2.3