LoginSignup
2
1

More than 5 years have passed since last update.

実践Common lispの最初に載ってるサンプルコード

Last updated at Posted at 2017-08-05

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)
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1