実践CommonLisp読了!

やっと読んだぜ!後半の実践部分が難しい.そこまではすらすら読めます.
使い方のバリエーションが豊富に載っていて,非常に丁寧で分かりやすい入門書でした.

CommonLispの凄いところ

  • format気合い入りすぎ
 ;; リストの中身一発表示
 (format t "~{~{~a,~}~%~}" '((1 2 3 4) (5 6 7 8)))
 1,2,3,4,<改行>
 5,6,7,8,<改行>
  • loop気合い入りすぎ
 ;; これは普通の使い方だけど
 (loop for i from 1 to 10 collecting i)
 > (1 2 3 4 5 6 7 8 9 10)
  • マクロ凄すぎ!神!

私にはまだ例示不能. (eq マクロ Lisp)

CommonLispの直して欲しいところ

  • 関数名に統一性がない(いろいろ入れすぎ感)
  • formatに気合い入れすぎ(読めません><)
  • loopに構文付けすぎ(中置構文入れてどうするんですか><)
 ;; for( i=0; str[i]!='\0'; ++i )
 ;; {   out << str[i] ; }
 (loop for char = (code-char (read-byte in)) ;; '='の右辺の値をループ変数charに束縛
       until (char= char +null+) do (write-char char s))))
    • 無駄に自然言語っぽいキーワードを入れすぎです(この例ではuntil)
  • コンテナとかユーザ定義してインターフェースはどうやって提供するべきか決まってなさげ

その他

  • Lispは単純じゃない.(S式の形が単純なだけ)
  • Lisp以外の言語で意味を持つ記号(+,-,->など)が文法上意味を持たないのは読みづらい. ML族を見習うべき!*1
  • コンテナを操作する関数名はC++っぽくてよいものもある(個人的に) remove-if,count-if-notなど.
  • 実用志向で作られてる感がある. 美しさと速さをどっちとるかを選ぶところでは,ギリギリ速さ優先な印象.
  • マクロは自分で書ける気がしない
  • ベルカ式魔法言語やばい. 実戦実践向け.


実践Common Lisp

実践Common Lisp

*1:これは自分でなんとかするべきかも知れない…?