Lisp三大方言つまみぐいイジハピ!TwitterID:@query1000こと深沢千尋のブログです。♡さいきんブログの評判が意外と気になるようになってきました。Lisp三大方言つまみぐいカテゴリ俺とEmacsquery1000Comment(0)Trackback(0)Lispの勉強をしている。Lisp』(クォリティ刊)を読了した。1997-10Amazon楽天市場Yahooショッピング短い本で、駆け足ではあったが、雰囲気を掴むのには役立った。あまりにも駆け足なので、ちょっと飲み込めないところはやはりあって、そういうところはもう忘れてしまっている。次に山本和彦さん著『リスト遊び』も読み終わった。2000-05Amazon楽天市場Yahooショッピングこの本は良書である。古本がプレミアム価格になっているのも頷ける。リスト遊び(cons、car、cdr、condなど)に特化した内容で、少しずつ難しい課題を読者に挑戦する形式で、どんどん読み進んでしまった。今は3冊目の、竹内郁雄さん著「初めての人のためのLISP」に掛かっている。2010-03-10Amazon楽天市場Yahooショッピングこの本は世評が高く、昔の本がわざわざ再販している、名著の誉れ高い本だが、実用的なプログラムをすぐ学びたい人にはあまり向いていないと思われる。冗談が多く、しかも現代の目で見ると笑いどころが分からない。ぼくも自分の本について余計な冗談が多いと聞かされることが多いが、この本を読んでぼくはまだまだ甘いなと思った。あと、肝心のLispの知識が、地の文(冗談)にシームレスに入っていて、たりーなーと思いながら油断してナナメ読みしていてフト気づくと、結構難しくて分からなくなっているのだ。それでも乗りかかった船なので、なんとか読了したい。あと、他の本を勉強してからまた戻ってくると、すっかりLisp流のユーモアが身について、別の感興を持つかもしれない。そもそもUbuntuを使っていて、いまいちWindowsのように手に馴染んでいないので、どうせなら手に馴染んでいるEmacsを極限まで使いたいと思ってLispの勉強に入ったので、明らかに遠回りである。Lispでカスタマイズするウィンドウマネージャーも出てきているので、ここで学んだことは(どんなことでもそうだが)無意味にはならないと思う。Interactionモードにしてから文章(このブログの下書きも含む)を書き、何か実験したいことがあったらLispを書いてC-j(Ctrl+J)を書いて評価してきた。Lispと文章がシームレスに書けたので、それはそれで便利ではあったのだが、わざわざC-jを押下するのも面倒であった。Lispのインタープリター環境が現れる。(M-xはメタエックスと読み、現代のキーボードではAlt+Xまたは、Escを押して、放して、xで入力できる)これはこれで便利なので、こっちでしばらく実験してみる。Managerとかだろうか。Lispには方言がある。昔は星の数だけ方言があるとか、開発者の数だけ方言があるとか(ということは、Lispで何か開発する人は、まずLispを作っていた?)言われていたが、今はだいたい次の3つに収斂していると思われる。Lispさえ勉強すればいいと思うが、基本的な概念を書いている学習書には他の方言のものが多い。いうことで、この3つを平行して、違いを比べたりして楽しみながら学ぶことにした。いずれもUbuntuであればアプリケーション・センターからラクチンポンで導入でき、しかもEmacsからielm状に実行できる。Lispはいくつか実装があるが、CLispというものをインストールした。"clisp")と書く。Lispに比べて下っ端ということだろうか。こっちは以下のページを参考にした。ソースを編集するSchemeもいくつか実装があり、Gaucheをインストールした。こっちは以下のページを参考にした。karetta.jp下図はClisp、Gauche、ielmの3つを並べてみたところだ。Lispには空リスト()の略記法nilがあるが、Schemeにはない。これはSchemeの方が覚えることが少なくて見通しが良さそうだが、そうでなくてもカッコ地獄になるLispの世界で()がそんな重要な意味を持つのはどうだろう。Lispではnullだが、Schemeはnull?と言う。疑問符?がうまく使われていてSchemeの設計思想を良く表している。()?にしてもいいと思うがそれはさすがにややこしいだろうか。Lispではlistpだが、Schemeはlist?である。Lispの不統一さに比べて、()かどうかを判別するのは、null?、リストかどうかを判別するのはlist?というSchemeは美しい気がする。Lispはnilである。Clispはなぜか大文字化した出力を表示する。Schemeの真偽値は#tと#fである。Lispではatomである。(アトムピーではない)ところが、Schemeには(少なくともGaucheには)atom?かと思うと、この関数がないのである。念のためatomもatompも調べたが、ない。Trace:_______________________________________これは次のようにatom?を定義して置かないといけないということだった。Lispが仲間はずれの事象もある。