#QiitaとrubyとCommon lisp初心者です!!
rubyっぽい書き方したくてRubyソースコード完全解説読んでて疲れてきたので箸休めに実践Common lisp 英語で書いてるweb版読んでてとりあえず最初の方のDB作成とイテレートのプログラムを写経してみた
動作環境が手元に無いのでdankogaiのevalできるサイトで動かした
defunが関数定義
dolistはrubyの.each do
他は雰囲気で読めるけど、formatが分かりづらかったのでCommon Lispのformat関数のディレクティブを俯瞰する。
と中級の書式文字列 を参考にした
~{ ... ~} がイテレート、~aが変数の出力、~10tは10回空白を出力、~%は改行、って感じ
#!/usr/local/bin/sbcl --script
(defun make-cd (title artist rating ripped)
(list :title title :artist artist :rating rating :ripped ripped))
(defvar *db* nil)
(defun add-record (cd) (push cd *db*))
(add-record (make-cd "Roses" "Kathy Mattea" 7 t))
(add-record (make-cd "Fly" "Dixie Chicks" 8 t))
(add-record (make-cd "Home" "Dixie Chicks" 9 t))
(defun dump-db ()
(dolist (cd *db*)
(format t "~{~a:~10t~a~%~}~%" cd)))
(dump-db)