2. 変数捕捉と多重評価 2.1. はじめに 関数の場合は引数は必ず1回評価されるのに対し、 マクロを使うと引数の評価の回数を制御することが出来ます。 このことを充分に認識していないと、意図せず変数を多重評価してしまう危険があります。 また、マクロは展開形が呼び出された場所に貼り付けられるので、展開形の中で不用意な 変数名を使っていると貼り付けられた場所にあった変数名と衝突してしまう危険があります。 これを避けるために、マクロ展開形の中では一意であることが保障されている gensym によって 生成されたシンボル (以下 gensym-symbol) を変数名に使う必要があります。 2.2. マクロ foronlisp の定義 マクロ for を使って多重評価と変数捕捉について説明したいと思います。 On Lisp にはさまざまなテクニックが解説されていますが、ここでは gensym を使
遠くない昔,Lispは何のためのプログラミング言語かと尋ねれば, 多くの人が「人工知能(AI)用のプログラミング言語」と答えただろう. 実際はLispとAIとの関係は歴史の偶然に過ぎない. Lispの開発者はJohn McCarthyで,彼は「人工知能」という言葉の提唱者でもある. 彼の生徒と同僚達は彼らのプログラムをLispで書いた. それがLispがAI用のプログラミング言語と言われ出したきっかけだ. このつながりは広く取り上げられ,1980年代の短いAIブームの間に 大変な程繰り返されたので,ほとんど迷信のようになってしまった. 幸運なことに,AIだけがLispの目的でないとの言葉が広まり始めた. 最近のハードウェアとソフトウェアの進歩のおかげで,Lispは商業的にも成功し始めた: 今では最高のUNIX系テキストエディタGNU Emacs, 業界標準のデスクトップCADソフトAuto
僕は関数型プログラミングが好きだ。次の10年にかけてコードの革命を起こしていくだろうと考えている:言語はより関数型の機能を採用していくだろうし、開発者はより関数型の技術を導入していくだろうし、いくつかの点では、関数型プログラミングの原則はコードを組み立てていく上で「自然で」もっとも明確なやり方だとみんな考えるようになっていくだろう。 だけど、僕はもうこのシナリオを本気にしちゃいない。関数型プログラミングは、ワクワクするものを学ぶことに興味があると言っている主流のプログラマにとって明白な、大きな問題を抱えている:関数型プログラマーは自惚れ野郎どもだってことだ。 モナドって何?「モナドは自己函手の圏における単なるモノイドに過ぎないよ!(キリッ ヒャッハー、そんな単語も何一つ分かってないとか、君、おバカな主流プログラマーってやつじゃないかい?m9(^Д^)」 実用的なシステムを構築するのに役に立
夫から「ニトロさんの奥さん、新婚旅行で無視されたっていうイメージしかない」*1とか何とか言われた情報を入手して、そういえば他の人にも「新婚旅行でハッカソンして何で怒られないの」みたいなことを言われたって話を聞いた。 新婚旅行で夫がハッカソンしたら普通みんな怒るものなんだろうか。(いや「普通怒る」なら「私も怒る」とはならないし、そもそも普通の基準よく分からない) 例えば絵描きと結婚して旅行中に急に絵を描き始めたら「なんで旅行してるのに絵なんか描くの!」って言わないと思う。小説家と結婚して旅行中に小説書き始めたらやっぱり「なんで小説なんか描くの!」って言わないと思う。なんかそんな感覚でいるんだけど、怒る人は絵描きや小説家でも怒るのか、それともプログラマだから怒るのか、ちょっと興味ある。 僕がLISPのなにかをしている間、私も負けじとLISPのなにかを作ったりしてました。 この頃ようやく色々揃っ
2009年02月05日13:03 by g000001 挫折すべき一冊 カテゴリbookg000001 「Lispが知りたくて、On Lispを買って読んだんだけど、難しくて挫折した」 という話を自分は、何度か耳にしました。 「On Lisp」は、簡単にいえば、CLのマクロの本で、しかも変なことが好きなポール・グレアムさんの本なので変なマクロの本な気もします。 そんな変なマクロの本をLISPとは何かを知るための第一歩とするのは、やはり難しいのではないかと思います。 主にCLマクロについて書かれていますので、CLの細かいところの解説も多くCL以外では、あまり役に立たない気がするのですが、CL村以外の方からも「参考になった」、「新しい概念に触れられた」等の意見も聞かれます。まさにポール・グレアム マジックです。 自分が考えるにOn Lispは普段Common Lispのコードを書いてる人が、「
C o m m o n L i s p S T G ( @ i d e a n ) 3 1 5 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 SBCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Lispbuilder-SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Lispbuilder-SDL (Windows) . . . . . . . . . . . . . . . . . . . . . . . . 6 2
quoteとかsetqとかifといった特殊な制御に用いるためのシンボルって「special operator」だったんですね。 今までずっとこれらのことを「special form」だと思い込んでいました。 special formはspecial operatorを使った式のことを指すらしいです。 (CLHS Glossaryに詳しく書いてます) 今までなんでこんな勘違いをしてきてそして気づかなかったのか非常に謎です。 私がはじめて読んだCLの本である『ANSI Common Lisp』にもしっかり「特殊オペレータ」と書いてますし、 最近読んでいる『実践Common Lisp』にも「特殊オペレータ」という語が使われています。 見事なまでにスルーしてました。 しかし、よくよく考えてみるとCLtL2にはspecial operatorという語が登場しません。 それどころか、関数やマクロの説明
by Olin Shivers Status This SRFI is currently in final status. Here is an explanation of each status that a SRFI can hold. To provide input on this SRFI, please send email to srfi-1 @nospamsrfi.schemers.org. To subscribe to the list, follow these instructions. You can access previous messages via the mailing list archive. Received: 1998-11-08 Draft: 1998-12-22--1999-03-09 Revised: several times Fi
スポンジで虎を倒せるんだよ? (you can take down a tiger with a sponge, right?)
IronLispってのが開発されているらしいが、正直どうでもいい。 Lispを使いたいということなら.NETにこだわらずに別の処理系を探せばいい。本気で仕事に使うっていうならそれに向いたLispもあるし、遊びだっていうなら例えばJavaで実装されたLispもいっぱいある。 .NETにこだわりたいんだとしても、.NET Framework上に実装されたLispですらいくつかあるわけだし(DotLispとかL Sharp .NETとか)、そっちで用が足りるのでは。 Paul Grahamに感化されたのか何なのかは知らないが、今さら「へーIronLispってのがあるんだー。」って意味わかんない。そんな人はきっとIronLispを動かすこともなく忘れていくんだろうさ。つか、そんなにLispに興味があるなら自分で処理系を書いてみればいいのに。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く