タグ

schemeに関するgan2のブックマーク (3)

  • Scheme on JavaScript でオセロゲーム - elm200 の日記(旧はてなダイアリー)

    動機 先日、JavaScript 界にその名をとどろかす、かの id:amachang にお会いする機会に恵まれた。amachang は、評判どおり、やさしく礼儀正しい好青年であった。最近、私は Gauche を勉強していて、その流れで amachang が作った JavaScript で動く Scheme の話になった。いろいろ教えていただいたので、そのささやかなお礼に、amachang の作った Scheme 風処理系のうえで、私が Gauche のために書いた簡単なオセロゲームのプログラムを走らせてみた。 謝辞 まずは Scheme on JavaScript を作ってくれた amachang に感謝します。ソースコードはわかりやすかった。言語実装者の気分がちょっぴり味わえて楽しかった。 あとはオセロゲームのアルゴリズムを解説しているこのサイトにも大変お世話になっております。非常に整

    Scheme on JavaScript でオセロゲーム - elm200 の日記(旧はてなダイアリー)
  • Practical Scheme

    Shiro Kawai 11/20/2000初出、3/29/2002更新 Cに慣れたプログラマがSchemeのコードを見て面らうことのひとつは、 無名の関数やローカル関数の多用だろう。 特に実行効率に敏感なプログラマにとっては「関数呼出しは高価」 という感覚が染み着いているため、 至るところに散りばめられたlambdaに眉をひそめてしまうようだ。 しかしSchemeにおいては、 コード上に関数が書いてあるからといって 実行時にスタックフレームの生成やレジスタの退避などのオーバヘッドが起こるとは限らない。 例えば関数の最後に別の関数を呼び出す末尾呼び出し(tail call) はただのjumpインストラクションに置き換え可能だ。 ここでは、Cプログラマを対象に、 lambdaで生成される関数群が実際にどのように実行され得るのかを書いてみたい。 (なお、Schemeの規格ではlambdaフォ

    Practical Scheme
  • 突然ですがRubyでSchemeのサブセットを実装します。継続と末尾再帰最適化ありの。その1:データ構造とパーサ - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

    Scheme/Lispを実装してみようって企画はたまにあるのですが*1、どれもこれも無限ループするとスタックオーバーフローする始末。末尾再帰最適化もないような代物にSchemeを名乗る資格はございませんことよ。 というわけで、この私がRubyでScheme(末尾再帰最適化あり)を実装してみようという企画でございますよ!三日くらいでさっさと片付けたいところです。 データ構造 これはできるだけrubyネイティブの型をそのまま利用する方向で。Consのみ新たに定義しますが、symbolもnumberもrubyのを流用します。必要なメソッドを後からひっつけたりできるので物凄くつぶしがききますねrubyは。ダックタイプだし。 パース 最初の難関。真面目にやろうとすると割と面倒なので、適当におわらせましょう。 まずデータ構造と補助関数。 class Cons def initialize(a,d) @

    突然ですがRubyでSchemeのサブセットを実装します。継続と末尾再帰最適化ありの。その1:データ構造とパーサ - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
    gan2
    gan2 2008/04/20
    「RubyでScheme(末尾再帰最適化あり)を実装してみようという企画」
  • 1