Add notes on ownership
[scheme.git] / abi.md
diff --git a/abi.md b/abi.md
index 5f09227ae56f2b21e31e7eca856a2e9917f60eec..28f81c4152683ee00ae2a3c77daa166fd6f92959 100644 (file)
--- a/abi.md
+++ b/abi.md
@@ -4,6 +4,22 @@ a heap is allocated at the start, and the address to the next free
 space on it is stored in `heap_start`. it needs to be
 updated/decremented whenever you put anything on the heap
 
+## todo
+- how should allocation be managed?
+make free blocks a doubly linked list. (how big is a block?)
+when allocating, use first free block, move up free pointer
+when freeing, do ???
+
+
+# ownership
+
+```
+(let ([s "hello"])  <- s should be a linear string
+  (mkpair
+    (lambda () (print s))               <- two references to s?
+    (lambda () (print (reverse s)))))
+```
+
 # closures
 
 * lambda: actual function containing the code