SchemeコードバトンのCommon Lisp版に参加してみました

http://gist.github.com/277161

id:higeponさんから始まったSchemeコードバトン.
id:g000001さんがCommon Lisp版をフォークしてらしたので,これなら分かるかなーと軽い気持ちで飛び入り参加してみました.
前の人はhttp://blog.livedoor.jp/naoya_t/ naoya_tさん.次の人はcranebirdさんです.

トップレベル関数のネーミングがhige:ponとかhige:pinとかなので.hige:penを実装しようと思ひける.
中身を考える前に既に名前を決めているというのもなかなか無いと思う.
元のソースが英単語の記憶クイズのようなものなのだけれど,英単語を1つ提示して知っているどうかのyes/noを問うだけのクイズなので,せめてiKnow!みたいにn択問題にすることにした.
さらに時間制限とか入れるとそれっぽくなるかも.

これまであんまり人のコードを読んでこなかったので,結構知らない表現が出てくる.
loopマクロの使い方をちょっと勉強したり,On Lispを引っ張り出してきてアナフォリックマクロの章を読んだりした.
loopマクロは完全に食わず嫌いだったが,リストの各要素に番号振って出力したりするのが

(loop
   for item in lst
   for i from 1 to (length lst)
   do (format t "~A.~A " i item))

で一撃でできたりするのは確かに便利そう.

今さらながら自分の書くループはnamed-letマクロばかりということに気付く.CLではこれは邪道なのだろうか・・・
でもリストを組み立てるのに便利だから今回もついつい使ってしまう.顰蹙ものである.

Clojure版もあるようなので,ShiroさんのClojure本が出たら挑戦してみたいなー