(define my-read-line
(lambda args
(let ((str (apply read-line args)))
(if (equal? str "")
(apply read-line args)
str))))
(define readlist
(lambda args
(values (read-from-string
(string-append "("
(apply my-read-line args)
")")))))
(define prompt
(lambda args
(apply format (current-output-port) args)
(flush (current-output-port))
(read (current-input-port))))
(define-macro (loop x)
`(call/cc
(lambda (return)
(while #t
,x))))
(define break-loop
(lambda (fn quit . args)
(format (current-output-port) "Entering break-loop.~%")
(flush (current-output-port))
(loop
(let ((in (apply prompt args)))
(if (quit in)
(return)
(format (current-output-port) "~A~%" (fn in)))))))
Language, Structure, Mining, Randomness, Robotics, Value
His story history -- My story mystery
2010年5月24日月曜日
On Lisp Common Lisp to Scheme 7
Figure 4.7: I/O functions.
登録:
コメントの投稿 (Atom)
0 コメント:
コメントを投稿