git » jacl.git » commit 7f4134a

hoist sentinels

author Alan Dipert
2020-03-24 06:02:54 UTC
committer Alan Dipert
2020-03-24 06:02:54 UTC
parent 727fb7b1de300e7874cda66f985263c2053a3f73

hoist sentinels

jacl.js +16 -16

diff --git a/jacl.js b/jacl.js
index ea16ccd..f96c86d 100644
--- a/jacl.js
+++ b/jacl.js
@@ -573,40 +573,40 @@ const interpretToken = (token, intern) => {
   return LispSymbol.createFromString(token, intern);
 };
 
-const readList = async stream => {
+const listSentinels = new Map([
+  ['.', new Object()],
+  [')', new Object()]
+]);
 
-  const rdr = new Reader(stream),
-        sentinels = new Map([
-          ['.', new Object()],
-          [')', new Object()]
-        ]);
+const readList = async stream => {
 
+  const rdr = new Reader(stream);
   let x, car;
 
-  x = await rdr.read(true, sentinels);
+  x = await rdr.read(true, listSentinels);
 
-  if (x === sentinels.get('.'))
+  if (x === listSentinels.get('.'))
     throw new Error(`Nothing before . in list`);
 
-  if (x === sentinels.get(')'))
+  if (x === listSentinels.get(')'))
     return new Values(null);
 
   car = x;
 
-  x = await rdr.read(true, sentinels);
+  x = await rdr.read(true, listSentinels);
 
-  if (x === sentinels.get('.')) {
-    x = await rdr.read(true, sentinels);
-    if (x === sentinels.get(')'))
+  if (x === listSentinels.get('.')) {
+    x = await rdr.read(true, listSentinels);
+    if (x === listSentinels.get(')'))
       throw new Error(`Nothing after . in list`);
     const cdr = x;
-    x = await rdr.read(true, sentinels);
-    if (x === sentinels.get(')'))
+    x = await rdr.read(true, listSentinels);
+    if (x === listSentinels.get(')'))
       return new Values(new Cons(car, cdr));
     throw new Error(`More than one object after . in list`);
   }
 
-  if (x === sentinels.get(')'))
+  if (x === listSentinels.get(')'))
     return new Values(new Cons(car));
 
   return new Values(new Cons(car, new Cons(x, (await readList(stream))[0])));