aboutsummaryrefslogtreecommitdiff
path: root/docs/step_notes.txt
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-04-23 21:46:57 -0500
committerJoel Martin <github@martintribe.org>2014-04-23 21:46:57 -0500
commit89bd4de1e2704c1bc562788b2c5e4fc08b71a538 (patch)
tree3ec33ca7e1030fdef0905317fdf911b8487685f0 /docs/step_notes.txt
parent85cc53f35b8302e13f0014454ac320b971c196db (diff)
downloadmal-89bd4de1e2704c1bc562788b2c5e4fc08b71a538.tar.gz
mal-89bd4de1e2704c1bc562788b2c5e4fc08b71a538.zip
Perl: add vector, hash-map, metadata, atom support. TCO let*
- Changes all collections to be one level of inderection where the top level is always a hash containing 'meta' and 'val'.
Diffstat (limited to 'docs/step_notes.txt')
-rw-r--r--docs/step_notes.txt22
1 files changed, 15 insertions, 7 deletions
diff --git a/docs/step_notes.txt b/docs/step_notes.txt
index 79036a8..09bc356 100644
--- a/docs/step_notes.txt
+++ b/docs/step_notes.txt
@@ -78,8 +78,6 @@ Step Notes:
- eval_ast:
- if symbol, return value of looking up in env
- if list, eval each item, return new list
- - if vector support, eval each item, return new vector
- - if hash_map support, eval each value, return new hash_map
- otherwise, just return unchanged ast
- EVAL/apply:
- if not a list, call eval_ast
@@ -87,6 +85,12 @@ Step Notes:
- repl_env as simple one level assoc. array (or hash_map)
- store function as hash_map value
+- vectors
+ - eval each item, return new vector
+
+- hash-maps
+ - eval each value, return new hash_map
+
- step3_env
- types module:
- may need function type if HashMap is strongly typed (e.g. Java)
@@ -195,6 +199,8 @@ Step Notes:
- Extra defintions needed for self-hosting
- core module:
- symbol?, sequential? (if not already)
+ - vector, vector?
+
- Other misc:
- conj function
@@ -202,14 +208,16 @@ Step Notes:
- atoms
- reader module:
- @a reader macro -> (deref a)
- - types module:
+ - core module:
- pr_str case
- atom type, atom, atom?, deref, reset!, swap!
- metadata
- - types module:
- - support meta property on symbols, hash-maps, lists, vectors,
- functions, atoms
- - add with-meta, meta functions
- reader module:
- ^ reader macro reads ^meta obj -> (with-meta obj meta)
+ - types module:
+ - support meta property on collections: lists, vectors,
+ hash-maps, functions, atoms
+ - clone/copy of collections
+ - core module:
+ - add with-meta, meta functions