COMMON LISP JP > Archives > 2011/07/30

2011/07/30 11:35:17 UTCNANRI
#
read-lineは使えます。http://xyzzy.s53.xrea.com/reference/wiki.cgi?p=read-line
#
force-outputはありません。
#
ただ、force-outputと似たようなことをするfinish-outputはあります。
2011/07/30 12:45:00 UTCggee
#
ありがとうございます。それと
#
(defun make-cd (title artist rating ripped)
  (list :title title :aritst artist :rating rating :ripped ripped))
make-cd
(defvar *db* nil)
*db*
(defun add-record (cd)
  (push cd *db))
add-record
(defun prompt-read (prompt)
  (format *query-io* "~a: "prompt)
  (finish-output *query-io*)
  (read-line *query-io*))
prompt-read

  
prompt-read
(defun prompt-for-cd ()
  (make-cd
   (prompt-read "title")
   (prompt-read "artist")
   (or (parse-integer (prompt-read "rating") :junk-allowed t) 0)
   (y-or-n-p "ripped {y/n}: ")))
prompt-for-cd

prompt-for-cd
(defun add-cds ()
  (loop (add-record (prompt-for-cd))
    (if (not (y-or-n-p "another? {y/n}: ")) (return))))
add-cds
(add-cds) このようなコードを実行すると eofに達してしまうのですがなんででしょう
2011/07/30 12:54:19 UTCshiro
#
add-recordの中で *db* じゃなく *db を参照してるけどそれは関係ないのかな
#
それ以外は、Allegro CLで実行すると正常に動作するみたいだけど。
2011/07/30 13:18:47 UTCbowbow99
#
xyzzy だと *query-io* が使えない(?)です。prompt-read の代わりに read-string がそのまま使えます。
2011/07/30 13:39:44 UTCgee
#
ありがとうございます。すごく助かりました。