about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--077stream.mu19
-rw-r--r--079table.mu6
2 files changed, 11 insertions, 14 deletions
diff --git a/077stream.mu b/077stream.mu
index c3af2ddf..305a150f 100644
--- a/077stream.mu
+++ b/077stream.mu
@@ -8,27 +8,26 @@ def new-stream s:address:shared:array:character -> result:address:shared:stream
   local-scope
   load-ingredients
   result <- new stream:type
-  i:address:number <- get-address *result, index:offset
-  *i <- copy 0
-  d:address:address:shared:array:character <- get-address *result, data:offset
-  *d <- copy s
+  *result <- put *result, index:offset, 0
+  *result <- put *result, data:offset, s
 ]
 
 def rewind-stream in:address:shared:stream -> in:address:shared:stream [
   local-scope
   load-ingredients
-  x:address:number <- get-address *in, index:offset
-  *x <- copy 0
+  *in <- put *in, index:offset, 0
 ]
 
 def read-line in:address:shared:stream -> result:address:shared:array:character, in:address:shared:stream [
   local-scope
   load-ingredients
-  idx:address:number <- get-address *in, index:offset
+  idx:number <- get *in, index:offset
   s:address:shared:array:character <- get *in, data:offset
-  next-idx:number <- find-next s, 10/newline, *idx
-  result <- copy-range s, *idx, next-idx
-  *idx <- add next-idx, 1  # skip newline
+  next-idx:number <- find-next s, 10/newline, idx
+  result <- copy-range s, idx, next-idx
+  idx <- add next-idx, 1  # skip newline
+  # write back
+  *in <- put *in, index:offset, idx
 ]
 
 def end-of-stream? in:address:shared:stream -> result:boolean [
diff --git a/079table.mu b/079table.mu
index 56b7c9fd..2ef03fa6 100644
--- a/079table.mu
+++ b/079table.mu
@@ -40,10 +40,8 @@ def new-table capacity:number -> result:address:shared:table:_key:_value [
   local-scope
   load-ingredients
   result <- new {(table _key _value): type}
-  tmp:address:number <- get-address *result, capacity:offset
-  *tmp <- copy capacity
-  data:address:address:shared:array:table_row:_key:_value <- get-address *result, data:offset
-  *data <- new {(table_row _key _value): type}, capacity
+  data:address:shared:array:table_row:_key:_value <- new {(table_row _key _value): type}, capacity
+  *result <- merge 0/length, capacity, data
 ]
 
 def put table:address:shared:table:_key:_value, key:_key, value:_value -> table:address:shared:table:_key:_value [