aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-10-06 21:03:03 -0500
committerJoel Martin <github@martintribe.org>2014-10-06 21:03:03 -0500
commit17e1c5f9f4006399398e8bb7e219a79962ebf3f0 (patch)
treecb7de0111d91c56ae61ee500a2798264773cf54b /docs
parentaf8fdff41e260b1b21be0e127afb536980f43804 (diff)
downloadmal-17e1c5f9f4006399398e8bb7e219a79962ebf3f0.tar.gz
mal-17e1c5f9f4006399398e8bb7e219a79962ebf3f0.zip
go: add step5_tco. Refactor env.
Move EnvType interface definition to types.go. Remove Env pointers.
Diffstat (limited to 'docs')
-rw-r--r--docs/step_notes.txt21
1 files changed, 16 insertions, 5 deletions
diff --git a/docs/step_notes.txt b/docs/step_notes.txt
index 02ad305..5d29888 100644
--- a/docs/step_notes.txt
+++ b/docs/step_notes.txt
@@ -233,9 +233,9 @@ Step Notes:
- step5_tco
- types module:
- mal function type:
- - stores: func, exp, env, params
- - func is EVAL in native mal case, otherwise reference to
- platform function
+ - stores: eval, exp, env, params
+ - eval is EVAL in native mal case (needed for map function
+ later), otherwise reference to platform function
- if metadata support, then store exp, env, params as
metadata
- printer
@@ -245,8 +245,19 @@ Step Notes:
- cases where we directly return result of EVAL, instead set
ast and env to what would be put in the EVAL, then loop.
- do, if, "apply"
- - for "apply" case, set env to new Env based on properties
- on the function
+ - "apply"
+ - if mal function type
+ - set env to new Env based on properties on the function
+ - if native function, same as before
+ - Details:
+ - types.EXT
+ - create Mal function type to store eval, exp, env, params
+ - cp step4_if_fn_do.EXT to step5_tco.EXT
+ - wrap EVAL in infinite while loop
+ - in let*, do, and if:
+ - set ast and env and loop (no return)
+ - in fn* create Mal function type
+
- step6_file
- core module: