aboutsummaryrefslogtreecommitdiff
path: root/notes
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2013-01-25 20:05:55 +0100
committerDrahflow <drahflow@gmx.de>2013-01-25 20:05:55 +0100
commit5c1b00b476b3fed6852426c2d3535848a1c68aef (patch)
tree01d319b30c09169a963014758ccc61c3beed4659 /notes
parent618c0f4fd9bf2e030f239a633ed3fb30e8859b1a (diff)
Some thoughts about optimizable resolution semantics
Diffstat (limited to 'notes')
-rw-r--r--notes19
1 files changed, 19 insertions, 0 deletions
diff --git a/notes b/notes
index 61ba400..81e059b 100644
--- a/notes
+++ b/notes
@@ -227,6 +227,25 @@ Main problem: How do we find out if the names mean what we believe they do?
* An optimized version of the code can be generated whenever it is called (using current name values)
+ fine grained control, sensible defaults possible
- even more assignment semantics
+=== Name Properties ===
+* [d] deeply constant: objects referenced (indirectly) from this name can be assumed constant (constant implied)
+* [c] constant: the object reference of this name can be assumed constant (code constant and static implied)
+* [t] code / type constant: the final code block (not function) reference and function type can be assumed constant
+* [s] static: the path from local scope to where the name resolves can be assumed constant
+ the name index within the scope can be assumed constant
+* [] dynamic: nothing can be assumed
+* [v] inactive: push value
+* [f] active: execute unless quoted
+* [q] quote-active: execute on first resolution (execution is instant)
++---------------------------------------------------+
+| | | s | t | st | c | d |
++---+------+-------+-------+--------+-------+-------+
+| v | defv | defvs | defvt | defvst | defvc | defvd |
+| f | deff | deffs | defft | deffst | deffc | deffd |
+| q | defq | | | | | |
++---+------+-------+-------+--------+-------+-------+
+* defaults: |defvst "==" deffd |deffst "=*" deffd
+* it is possible to globally turn checking (after dynamic resolution) on
== Sticky Resolution ==
* Active names are considered constant after being resolved for the first time