タグ

LanguageとSchemeに関するItisangoのブックマーク (2)

  • あなたがLispを無視することができない理由 - 八発白中

    (この記事はLisp Advent Calendar 1日目のためのエントリです。) 禅が好んで用いる比喩がある。月を指すには指が必要である。だが、その指を月と思う者はわざわいなるかな。 — 鈴木大拙「禅」 これをLispに例えるなら、こう言うことができるかもしれない。 Lispを書くには括弧が必要である。だが、その括弧をLispと思う者はわざわいなるかな。 Lispを普段書いている身としてはLispについて括弧がどう、というのは些細なものに思えるが、Lispを知らない人からすると自然な考えだろう。人間は知らないものを理解しようとするとき、自分が今まで見たもの、知っているものと比較して手がかりを得ようとする。Lispが他のプログラム言語と比較してユニークなものは、やはりその括弧で表現されたS式だ。 しかし、Lispが括弧を使った奇妙な構文を用いるのは理由がある。そしてそれがLispの強力さ

    Itisango
    Itisango 2013/12/01
    “人間は知らないものを理解しようとするとき、自分が今まで見たもの、知っているものと比較して手がかりを得ようとする。Lispが他のプログラム言語と比較してユニークなものは、やはりその括弧で表現されたS式だ。”
  • スクリプト言語間における「lexical closure」の違い - karasuyamatenguの日記

    update: なんとMatz様から直々の指摘を受けてしまった: http://twitter.com/yukihiro_matz/status/26685527109 実はこのポストの後、ベンチプレスを1セットやって一息ついていいたところ、schemeの例が間違っていることに気付いた。確かにループのボディーにあたるlambdaでletでローカルを作ってキャプチャーするとMatz様のおっしゃる通り。 俺はPerlに心を侵されていたのか… いつも「動けばいいやぁ~」みたいな気持で使っていたclosureだが、もう一度勉強しなおした方がよさそうだ。 (let ([closures '()]) (for-each ;; これがループのボディーになるよな。 (lambda (i) ;; じゃ、ここにローカル (let ([loop-local-var (sprintf "foo~A" i)]) (

    スクリプト言語間における「lexical closure」の違い - karasuyamatenguの日記
  • 1