guile: fixed readline bug
authorNala Ginrut <nalaginrut@gmail.com>
Sat, 4 Apr 2015 04:26:48 +0000 (12:26 +0800)
committerNala Ginrut <nalaginrut@gmail.com>
Sat, 4 Apr 2015 04:26:48 +0000 (12:26 +0800)
13 files changed:
guile/core.scm
guile/readline.scm
guile/step0_repl.scm
guile/step1_read_print.scm
guile/step2_eval.scm
guile/step3_env.scm
guile/step4_if_fn_do.scm
guile/step5_tco.scm
guile/step6_file.scm
guile/step7_quote.scm
guile/step8_macros.scm
guile/step9_try.scm
guile/stepA_mal.scm

index 64638fc..a5b87b3 100644 (file)
     (vals        ,_vals)
     (contains?   ,_contains?)
     (sequential? ,_sequential?)
-    (readline    ,readline)
+    (readline    ,_readline)
     (meta        ,_meta)
     (with-meta   ,_with-meta)
     (atom        ,make-atom)
index 7845887..f4f0305 100644 (file)
 ;;(use-modules (ice-9 readline))
 
 (library (readline)
-  (export readline add-history)
+  (export _readline)
   (import (guile) (ice-9 readline)))
 
 (define mal-history
   (format #f "~a/.mal-history" (getenv "HOME")))
 
 (setenv "GUILE_HISTORY" mal-history)
-
+(readline-set! bounce-parens 0)
 (activate-readline)
 
-;;(define (readline prompt)
-;;  (display prompt)
-;;  ((@ (ice-9 rdelim) read-line) (current-input-port)))
+(define (_readline prompt)
+  (let ((str (readline prompt)))
+    (add-history str)
+    str))
index dc1bcda..dd598b6 100644 (file)
 
 (import (readline))
 
-(define (READ) (readline "user> "))
+(define (READ) (_readline "user> "))
 
 (define (EVAL ast env) ast)
 
 (define (PRINT str)
   (and (not (eof-object? str))
-       ;;(add-history str)
        (format #t "~a~%" str)))
 
 (define (LOOP continue?)
index 1f82340..3517f7b 100644 (file)
 (import (readline) (reader) (printer))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (EVAL ast env) ast)
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index 44387b5..7783185 100644 (file)
@@ -22,7 +22,7 @@
     (/ . ,/)))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
@@ -51,7 +51,6 @@
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index 3655ffe..88e4eea 100644 (file)
@@ -27,7 +27,7 @@
     (make-Env #:binds b #:exprs e)))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
@@ -69,7 +69,6 @@
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index bfdd377..8f7fadd 100644 (file)
@@ -21,7 +21,7 @@
     (make-Env #:binds b #:exprs e)))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
@@ -83,7 +83,6 @@
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index 4450699..8517a6b 100644 (file)
@@ -21,7 +21,7 @@
     (make-Env #:binds b #:exprs e)))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index 2bbe450..c94ff62 100644 (file)
@@ -21,7 +21,7 @@
     (make-Env #:binds b #:exprs e)))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index 6cbd248..704d0e8 100644 (file)
@@ -21,7 +21,7 @@
     (make-Env #:binds b #:exprs (map (lambda (x) (make-func x)) e))))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index 169fb06..f191d7c 100644 (file)
@@ -21,7 +21,7 @@
     (make-Env #:binds b #:exprs (map (lambda (x) (make-func x)) e))))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index 2dd0fa5..0d57711 100644 (file)
@@ -21,7 +21,7 @@
     (make-Env #:binds b #:exprs (map (lambda (x) (make-func x)) e))))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       ;;(add-history str)
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)
index cb4c77d..0b0eb6d 100644 (file)
@@ -23,7 +23,7 @@
       env)))
 
 (define (READ)
-  (read_str (readline "user> ")))
+  (read_str (_readline "user> ")))
 
 (define (eval_ast ast env)
   (define (_eval x) (EVAL x env))
 
 (define (PRINT exp)
   (and (not (eof-object? exp))
-       (add-history (object->string exp))
        (format #t "~a~%" (pr_str exp #t))))
 
 (define (LOOP continue?)