「<a href="http://ameblo.jp/magi-alphard/entry-11220357507.html" target="_blank">Common Lispでマイiotaを定義(修正)</a>」
の、続きみたいなもん。
loop文を学んだのでloop文とif文で書いてみた。
ただloop文は「LISPっぽくない」という理由で人によっては敬遠するらしい。
まぁ自分はその辺こだわりもないし、使えるときは使ってみようかな。
#####################################################
(defun iota (start end)
(if (> start end)
(loop for ans from start downto end collecting ans)
(loop for ans from start to end collecting ans) ))
(print (iota (read) (read)))
#####################################################
なんと。
あれほど長かったマイiotaがたったこんだけで書けるとは。
実にシンプル。
loop文は英文っぽいためわかりやすい。それゆえプログラミングっぽくないよね。
それとif文は初めて使った。
condと違って2分岐しかできないけど、condより短く書けるね。
でもcondの方がわかりやすくて好きだなぁ。
まぁこれはこれでよし。スマートだ。