Island Life

2004/08/04

c.l.lで最近話題になった、テキスト端末用Mandelbrot集合。Gauche向けに ちょっと変えてsignatureにも押し込めるように詰めてみた。

(do((y -1(+ y .1)))((> y 1))(do((x -2(+ x .04)))((> x 1))(let1
a(+ x(* y +i))(let l((z a)(c 126))(let1 q(+ a(* z z))(or(and(<
(abs q)2)(> c 32)(l q(- c 1)))(write-byte c))))))(newline))

でも出力を見ると、NetHackのspecial levelのように見えて仕方がない。

Tags: Programming, Gauche

2004/08/03

Mark Chapmanは、John Lennonを殺す前の数年間、ハワイに住んでいた そうで、こないだまでKumu Kahuaで一緒のActing Classをとっていた人が、 以前看護婦をしていた時に彼の友人だったとのこと。 なんでもその件で日本のTV局にインタビューを受けて、 それが今日(日本時間8/4)、テレビ朝日19:00〜の番組で放映されるらしい。 どんなコンテキストだったのか、たまたま観た人がいたら教えて下さい(いるかな?)。

Tag: 生活

2004/08/01

キターーーーー!!!

Tag: 芝居

2004/07/30

Great Hackers

例によってslashdotで大議論を醸しているようなので ちょいと急いで訳してみた。Paul Graham: Great Hackers

しかしPaulのessayがcontroversialなのはある程度狙ってやってるんだと 思っていたけど、地なのかしらん。

ところで、c.l.sで こんな求人を見た。 Scheme/Lispで仕事がしたくて、シリコンバレーに行ってもいいって人、 応募してみたら。

Tags: PaulGraham, 翻訳, Lisp

2004/07/26

uri.escape

天泣記 7/26

Unix では ? をファイル名に使えるので、 ~/public_html/question?mark というファイルを作れて、とある HTTP サーバ(のとある設定)では、これは http://host/~user/question%3Fmark という URI になる。

この URI を URI.escape の結果として生成できるかというと...

そもそも、URIのescape規則はURIの各コンポーネント(path, query, fragment) に対して適用されるものなんで (しかもschemeによってどのコンポーネントが decodeされるべきかが異なる)、順番を守ることが必要なはず。

  • 受ける時: コンポーネントに分割→コンポーネントごとにdecode
  • 出す時:コンポーネントごとにencode→繋げてひとつのuriに

原理的に、既にくっついちゃったひとつのuriを正しくencodeすることはできない。

そこを何とか…って わけですか。でも、%XXの'%'は変えない、というのも、 「大抵は動くがたまに動かないことがある」という嫌な動作になりそう。 (例:パラメータとしてURLを取るリダイレクタに、'#'を含むURLを パラメータとして渡した、というURLをもう一度そのようなリダイレクタに 渡した場合とか)。そんなん万に一つもないだろうから無視!というのも、 まあ、ありでしょう。 私はそういう落し穴はあらかじめ埋めておかないと不安な質なんで気になりますが。

内部的にくっつけないで持っといて、最後の最後に文字列にするって 方向だと、Common Lispのpathnameくらいちゃんと(ごちゃごちゃと)やらんと いかん羽目になりそうな気もする。

ところで、この「落し穴は潰しておきたい」というのは、たぶんSchemerの 多くに共通して見られる傾向だと思うのだけれど、自分の場合、これは 怠惰から来ているように思える。つまり、一度考えたことはもう考えたくないのだ。 特にでかいシステムを作って行く場合、コンポーネントを煉瓦のように 積み重ねてゆくわけだけど、途中の煉瓦に怪しいのがあると、 どんどん上に積んでいった時に全体が傾く。そしたら、上に積んだ煉瓦を ばらして原因を突き止めて、それを置き換えて、また上に積み直さなくちゃ ならない。それが面倒臭い。

Lightweight Languageなら取り崩しも積み直しも楽だし、 まあおおざっぱに1万行以下くらいの小さなプログラムなら たいして問題にはならないだろう。でもいつか、数十万行以上の規模の システムになった時には、土台を直すのは大変。 (行数で規模を測るのはなんだけど、目安としては通じるかと思う)。

そうは言ってもやっぱり穴はどうしても出来る。あれだけ侃々諤々と 議論して作られたR5RSにも、かなりでかい穴がある。 穴の無い仕様なんて作れないのかもしれない。が、それを夢見るのが Schemerなのかもしれん。

Tags: Programming, Scheme

More entries ...