wisp
 
(Arne Babenhauserheide)
2014-07-14: much simpler unicode treatment in the reader by just setting LC_ALL

much simpler unicode treatment in the reader by just setting LC_ALL to the emptystring early on (which is done anyway in interactive use).

diff --git a/wisp-reader.w b/wisp-reader.w
--- a/wisp-reader.w
+++ b/wisp-reader.w
@@ -15,6 +15,9 @@ define-module : language wisp spec
   . #:use-module : system base language
   . #:export : wisp
 
+; Set locale to something which supports unicode. Required to avoid using fluids.
+setlocale LC_ALL ""
+
 ;;;
 ;;; Language definition
 ;;;
@@ -32,21 +35,10 @@ define : read-one-wisp-sexp port env
   define : read-wisp-chunk
     if : eof-object? : peek-char port
       read-char port ; return eof: we’re done
-      let
-         : dpe : fluid-ref %default-port-encoding
-           set-pending-port!
-             lambda ()
-                 let
-                   : s : wisp2lisp : wisp-chunkreader port
-                   set! : wisp-pending-port port
-                      open-input-string s
-         if dpe ; default port encoding is set
-           set-pending-port!
-           ; else: we need to redefine %default-port-encoding to
-           ; UTF-8. Use with-fluids to avoid affecting other code.
-           with-fluids : : %default-port-encoding "UTF-8"
-             set-pending-port!
-         try-pending
+      let : : s : wisp2lisp : wisp-chunkreader port
+        set! : wisp-pending-port port
+               open-input-string s
+        try-pending
   define : try-pending
     let : : pending-port : wisp-pending-port port
       if pending-port