wisp
 
(Arne Babenhauserheide)
2017-11-11: add lines starting with # to be interpreted as literal arrays

add lines starting with # to be interpreted as literal arrays

diff --git a/tests/literalarray.scm b/tests/literalarray.scm
new file mode 100644
--- /dev/null
+++ b/tests/literalarray.scm
@@ -0,0 +1,1 @@
+#(a b)
diff --git a/tests/literalarray.w b/tests/literalarray.w
new file mode 100644
--- /dev/null
+++ b/tests/literalarray.w
@@ -0,0 +1,1 @@
+# a b
diff --git a/wisp-reader.w b/wisp-reader.w
--- a/wisp-reader.w
+++ b/wisp-reader.w
@@ -36,6 +36,8 @@ catch #t
 define wisp-pending-sexps : list
 
 define : read-one-wisp-sexp port env
+         ;; allow using "# foo" as #(foo).
+         read-hash-extend #\space : λ (chr port) #\#
          cond
             : eof-object? : peek-char port
               read-char port ; return eof: we’re done
diff --git a/wisp-scheme.w b/wisp-scheme.w
--- a/wisp-scheme.w
+++ b/wisp-scheme.w
@@ -686,6 +686,15 @@ define : wisp-replace-paren-quotation-re
                 list 'quasisyntax : map wisp-replace-paren-quotation-repr a
              : 'REPR-UNSYNTAXSPLICING-e749c73d-c826-47e2-a798-c16c13cb89dd a ...
                 list 'unsyntax-splicing : map wisp-replace-paren-quotation-repr a
+             ;; literal array as start of a line: # (a b) c -> (#(a b) c)
+             : #\# a ...
+               with-input-from-string ;; hack to defer to read
+                   string-append "#"
+                       with-output-to-string
+                           λ :
+                             write : map wisp-replace-paren-quotation-repr a
+                                     current-output-port
+                   . read
              : a ...
                map wisp-replace-paren-quotation-repr a
              a