About
what kind of things interest me?
Looking for something specific?
“
~/.vimperatorrcに追加 ” press ‘w’ to look up the selected word in Dictionary.app javascript «EOM (function () { mappings.addUserMap([modes.NORMAL], [‘w’], ‘Pass selected word to Dictionary.app’, function () { var sel = window.content.getSelection(); if(sel.toString()) { var word = encodeURI(sel.getRangeAt(0).toString().replace(/^\s+|\s+$/g, “”)); getBrowser().loadURI(“dict:///”+word, null, null); getBrowser().loadURI(“dict:///”+word, null, null); // in case Dictionary.app is not launched. } else liberator.echoerr(‘Dictionary.app: Word not selected.’); }, { } ); })(); EOM ”
—
“
# コンパイル時の計算. マクロ呼び出しには,2つの時点での処理が関わってくる. マクロの展開時と,展開形の評価時だ. Lispプログラムでのマクロ展開は全てプログラムがコンパイルされたときに行われ, コンパイル時に実行できるどのような計算も,実行時にプログラムを遅くすることはない. オペレータが仕事の一部をマクロ展開の段階で済ませるように書けるなら, マクロとして書く方が効率がよいだろう. 賢いコンパイラでもできないようなことがあれば, 結局実行時に関数がこなすことになるのだから. 第13章ではavgのように展開時に仕事を行うマクロについて説明する.
# Lispとの緊密な連携. 関数ではなくマクロを使うと,プログラムをLispと緊密に連携させられることがある. ある問題を解くプログラムを書く代わりに, マクロを使ってその問題をLispが既に解法を知っているような問題へ変形できるときがある. このアプローチが可能なときは,大抵プログラムは小さくかつ効率的になる: Lispが処理を代わりに行ってくれるので小さくなり, Lisp処理系の製品は一般的にユーザのプログラムより無駄を削いであるから効率がよくなる,という訳だ. この長所は主に埋め込み言語で明らかになるが,それについての説明は第19章から始まる.
# 関数呼び出しの節約. マクロ呼び出しは,書かれた所に直接展開される. だからよく使われるコードのまとまりをマクロとして定義しておけば, それが使われる度に関数を呼び出さなくともよい. Lispの古い方言では,プログラマは実行時の関数呼び出しを節約するために, マクロのこの性質を活用していた. Common Lispでは,この仕事はインライン宣言された関数が代わりに行うものとされている. 関数をインライン宣言することで, コンパイルされたら呼出側コードの中に埋め込まれるよう指示できる. マクロと全く同じだ. しかし,ここでは理想と現実のギャップが出てくる. CLtL2 (p. 229)には「コンパイラがこの宣言を無視するのはフリーである」とあり, 幾つかのCommon Lispコンパイラは確かに無視している. そのようなコンパイラを使わざるを得ないのなら, 関数呼び出しの節約にマクロを使うのも認められるだろう. ”
—
“
彼は、これから一生、私にアイスクリームをおごる義務があります ”
—
“
持って生まれてきた性格、社会に出るまでに打ち込んだこと、交友関係、生き方、仕事の進め方、職場での立ち振る舞い方全てに「正解」があって、それを満足しない人間は社会に出て職を職を得る資格さえ与えられない。最近、そんな社会に絶望感を感じています。 ”
—
“
そうすると,当然,人へのタグ付けも実現しよう,と考える人が出てきます。これは,AR用ディスプレイを通して人の顔を見ると,頭の上や周囲にその人のプロフィールが表示されるといったことです。実現には顔認識技術の精度向上や顔写真のデータベース化などがポイントになりますが,既にスウェーデンのある研究グループは,人へのタグ付けを実現するソフトウエアを開発しています。 ”
—