タグ

ブックマーク / practical-scheme.net (9)

  • Lisp:S式の理由

    S式は人に優しいか Shiro: Lispの不人気の理由として筆頭に上げられるのが、括弧だらけの 独特の見た目。とっつきにくい、一般的な表記法と違っていてわかりにくい、 等々、様々なことが言われてきました。しかし、 S式を捨てたLispも開発されましたが 流行ったとはいい難く、Lispな人々はいまだに括弧に固執しているかのようです。 S式のメリットをLisperに尋ねれば、エディタがどうの、マクロがどうの、といった 回答が真っ先に返って来ると思うんですが、そういう理屈をいくら理解しても S式がダメな人がS式を好きになったりはしません。どうも、もっと根的な 感覚に大きな隔たりがあるような気がします。非Lisperから理解しがたい、 Lisperの持つ感覚とはどんなものなんでしょうか。Lisp脳から見た世界は どんなものなのでしょうか。 構文木を人間が書く? S式は言ってみれば言語の構文木そ

    Lisp:S式の理由
    todesking
    todesking 2021/03/20
  • Scheme:ExplicitMonad

    Shiro: SchemeでMonadを書こう、という話はちょくちょくある。 OlegさんのMonadic Programming in Scheme Neelakantan KrishnaswamiのMonads in Scheme teranishiさんのページ howm wiki - モナド 実用的な見地からは、Monadが便利なのはモナド則を満たす基演算を定義 しておけば他の色々な操作がジェネリックに行えることだ。 (call-with-iteratorsさえ定義しておけばgauche.collectionの色んな ジェネリック関数が使えるようになりますよ、というのに似ている)。 ただ、Schemeのような実行時型判定を行う言語でMonadを使おうとすると どうもすっきりいかない。というのは、Monadの基演算が引数の型だけでなく 戻り値の型でディスパッチする必要があるからだ。

    Scheme:ExplicitMonad
    todesking
    todesking 2015/11/11
  • Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由

    Lispについての正しい認識と、それでもLisperがLispを使う理由 yoriyukiさんのエントリがなかなか 真実を突いていたので、ネタにさせていただきます。 原因のほとんどは経路依存性とかネットワーク効果によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、 Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。 Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。 動的型付け:利点でもあるけど、特有のバグを引き起こす。 識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美

    Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由
    todesking
    todesking 2014/01/21
  • Scheme:多値

    多値の機能はR5RSになってから追加された、Schemeでは比較的新しい機能だ。 CommonLispやDylanにはある。 純粋な意味での多値、すなわちコンティニュエーションに一つ以上の値が渡るという意味での 多値を実装している言語は、メインストリームではあまり無いと思う。 ただ、多重代入(データストラクチャをdecomposeして複数の変数に代入する機能) があれば、ほとんど多値と同じことができる。RubyPythonにはこの機能がある。 そのため、多値の必要性に関しては大きな議論があり、Schemeコアな人々の中でも 意見が割れている。最近もcomp.lang.schemeで 大きなスレッドが立った。 個人的には多値はかなり頻繁に利用している。 このページでは主として使いどころに関していろいろ書いてみる。 突っ込み歓迎。 --Shiro 方法 - どうやって使う?現象 - どんな時

    Scheme:多値
    todesking
    todesking 2012/11/21
    フムー
  • Scheme:なぜSchemeにはreturnが無いのか

    あるいは、なぜcall/ccがプリミティブなのか、に関する一考察 (Shiro: 「なんでも継続」に入れようかと思ってたネタだけど、 あっちがいつ書けるかわからんので、忘れないようにこっちにまとめとく) (話の流れがあるので、誤りの修正以外のコメントは途中ではなく、一番下にお願いします) returnはどこだ? Aliceは、リストlisと述語手続きpredを取り、lisの各要素に順にpredを適用して、 predが真の値を返したら直ちにその要素を返すような関数findを 書くことを考えた。 (findは便利なので、実はsrfi-1に定義されてるけど、 Aliceはまあ自分の勉強のために書いてみることにしたと思いねえ)。 AliceはPerlなら良く知っている。Perlならこんな感じで書けるはず。 sub find { ($pred, $lis) = @_; foreach $elt (@

    Scheme:なぜSchemeにはreturnが無いのか
    todesking
    todesking 2008/08/07
  • R6RSの歩き方

    Revised^6 Report on Algorithmic Language Scheme -- アルゴリズム言語 Scheme に関する報告書第6改訂版。 2007年9月に正式に決定された。正式な文書は http://www.r6rs.org/ から 入手できる。 R5RSまでのミニマリズムから、実用主義へ大きく方針変更がなされたため、 仕様の分量もR5RSの50ページからR6RSは全4部、計187ページへと大きく膨らんでいる (ただしコア言語の仕様は90ページ、あとはライブラリや設計上の選択の理由説明である)。 そのため、それまでのミニマリズムを良しとするSchemerと、実用に使えるリッチな 仕様を望むSchemerの間でたいへんな議論となった。 結局、Schemeコミュニティ内で投票が行われ、賛成67票、反対35票、棄権10票で 批准された。しかし、批准の基準である総投票数の6

    R6RSの歩き方
    todesking
    todesking 2007/10/18
    r6rs,変更点とか。
  • Scheme:マクロ:CommonLispとの比較

    安全なマクロ束縛変数の衝突自由変数の衝突S式≠プログラム?議論、コメント 関連: Scheme:マクロ:anaphoric ifの代替, Scheme:マクロの効用, Scheme:マクロの危険 2007/05/15 00:08:13 PDT追記: 黒田さんの再反論と、それに対するコメント:Scheme:マクロ:CommonLispとの比較:意味論。 安全なマクロ MSIの黒田さんの About Schemeより: first class symbol がないということは様々な弊害を引き起こしますが、なかでも深刻なのは、名前の衝突に関して無力な点です。 そうすると、実質 macro が書けない… 例えば以下の arithmetic-if は、いかなる名前とも衝突しない uninterned な名前を var に割当てることで、 どういうコンテクストにおいても動作保証のできるマクロ展開結果を

    Scheme:マクロ:CommonLispとの比較
  • GaucheNight

    WiLiKi, a Wiki engine written in Scheme

    GaucheNight
  • WiLiKi

    Welcome to WiLiKi This is WiLiKi, yet another awesome Wiki clone written in Scheme. (Wiliki is engineering in Hawaiian). If you see garbage characters, you may be using a browser that can't display Japanese characters. Just leave them alone. To test WiLiKi features, try SandBox. Development of WiLiKi is supported by SourceForge . [RDF Site Summary] Currently the latest version is provided from Git

    WiLiKi
    todesking
    todesking 2006/03/14
    Schemeで記述されたWiki
  • 1