LISP 简单的数据库 3.4 改进用户交互

来源:互联网 发布:vb len函数 编辑:程序博客网 时间:2024/05/29 03:13


;使用全局变量记录数据(defvar *db* nil);数据记录格式(defun make-cd (title artist rating ripped)  (list :title title :artits artist :rating rating :ripped ripped));添加记录(defun add-record (cd) ( push cd *db*));查看数据库内容(defun dump-db()  (dolist (cd *db*)    (format t "~{~a: ~10t~a~%~}~%" cd)));提示用户输入CD信息(defun prompt-read (prompt)  (format *query-io* "~a: " prompt)  (force-output *query-io*)  (read-line *query-io*));依次提示用户输入信息(defun prompt-for-cd()  (make-cd   (prompt-read "Title")   (prompt-read "Artist")   ;(prompt-read "Rating")   ;(prompt-read "Ripped [y/n]")   ;快餐式验证数据有效性   (or (parse-integer (prompt-read "Rating") :junk-allowed t) 0)   (y-or-n-p "Ripped [y/n]: ")  ));批量添加数据,使用回车退出(defun add-cds()  (loop (add-record (prompt-for-cd))     (if (not (y-or-n-p "Another? [y/n]:")) (return)      )   ))


LISP还支持中文