about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-06-20 21:35:02 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-06-20 22:32:03 -0700
commitecc763f092456b4d8c93a3d7f47163e4a32fa7b0 (patch)
tree67563bed58f885432161c31e99775aa01c90bf00
parentdeb610367f88d3271a1e690f8602655c60f2efe6 (diff)
downloadmu-ecc763f092456b4d8c93a3d7f47163e4a32fa7b0.tar.gz
new macro: ret
http://arclanguage.org/item?id=11068
-rw-r--r--shell/data.limg13
1 files changed, 7 insertions, 6 deletions
diff --git a/shell/data.limg b/shell/data.limg
index 8c594004..31510aef 100644
--- a/shell/data.limg
+++ b/shell/data.limg
@@ -18,6 +18,8 @@
     (list . [def (list . args)
   # we should probably make a copy here
   args])
+    (ret . [mac (ret var val . body)
+  `(let ,var ,val ,@body ,var)])
     (len . [def (len l)
   if (no l)
     0
@@ -125,12 +127,11 @@
              dx
              0)))))))))))])
     (read_line . [def (read_line keyboard)
-  (let str (stream)
-  (let c (key keyboard)
-    (while (not (or (= c 0) (= c 10)))
-      (write str c)
-      (set c (key keyboard))))
-  str)])
+  ret str (stream)
+    let c (key keyboard)
+      while (not (or (= c 0) (= c 10)))
+        (write str c)
+        (set c (key keyboard))])
     (wait . [def (wait keyboard)
   while (= 0 (key keyboard))
     ()])
49' href='#n149'>149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218