タグ

schemeに関するyuguiのブックマーク (24)

  • Gauche:拡張浮動小数点演算の謎

  • もうひとつの Scheme 入門

    勾配の緩やかな初心者向け Scheme 入門ページです。 コンピュータは使ったことがあるが、プログラミング経験があまりない人を想定しています。 Scheme の解説はすでに山ほど優れたものがありますが、あえて解説記事を書いてみました。 Scheme のような抽象的な話題は波長が合えばすんなりと理解できますが、あわないと全く理解できません。 他の解説を読んで今ひとつよく理解できなかった人は試しに読んでみてください。 この記事の目標はコンピュータ科学の教科書の決定版である SICP を読める程度の Scheme の知識を提供することです。 目次: 処理系のインストール Scheme を電卓代わりに使う リストを作ろう 関数を定義しよう 分岐 局所変数 繰り返し 高階関数 入出力 代入 文字、文字列 シンボル型 連想リスト、ハッシュ表 ベクトルと構造体 構文の定義 (マクロ) 継続 遅延評価 非

  • はてなブログ | 無料ブログを作成しよう

    うまくいかない日に仕込むラペ 「あぁ、今日のわたしダメダメだ…」 そういう日は何かで取り返したくなる。長々と夜更かししてを読んだり、刺繍をしたり…日中の自分のミスを取り戻すが如く、意味のあることをしたくなるのです。 うまくいかなかった日のわたしの最近のリベンジ方法。美味しいラペを…

    はてなブログ | 無料ブログを作成しよう
    yugui
    yugui 2007/01/05
  • About Scheme

    (2006年11月21日に開催した Lisp セミナー 後の懇親会に出席して) 先日のセミナーのあと、懇親会で何人かの方に 「Scheme についてどう思うか?」を聞かれました。 わたしは何を隠そう、初めて Scheme を知ったとき最終兵器を手に入れたような気分になった者の1人です。 もうこれで他のプログラミング言語を学ぶ必要はない、とまで思ったものです。 幸い、それが大間違いだったことにほどなく気がつき、 いまでは Scheme には ALGOL としての期待しか持っていません。 端的に言ってしまえば Scheme は Lisp ではないです。 この2つを混同するのは味噌糞いっしょ、ってやつで、つつしむべきです。 Confusing Common Lisp and Scheme is permissible once in a human life. -- Erik Naggumなぜか

    yugui
    yugui 2006/12/05
    ほぅ。CLの人から見て。
  • ホワット・ア・ワンダフル・ワールド gauche の入出力 port を C から使う

    以下メモ. やりたいこと.C 文字列 (ヌル終端) を Scheme コード片として評価し,結果を C 文字列の形で受け取る. C 文字列 (とりあえず,コマンドライン引数として与えている) を評価して,結果を標準出力に書き出すまではできた. $ gauche-config -I -I'/usr/lib/gauche/0.8.7/include' $ gauche-config -L -L'/usr/lib/gauche/0.8.7/i486-pc-linux-gnu' $ gauche-config -l -lgauche -ldl -lcrypt -lutil -lm -lpthread $ tcc -I/usr/lib/gauche/0.8.7/include /dev/stdin -L/usr/lib/gauche/0.8.7/i486-pc-linux-gnu -lgauche

    yugui
    yugui 2006/10/23
  • http://www.fobj.com/hisa/diary/20061005.html

  • 2006-06-03

    昨日のエントリに Rui さんからコメントを頂きました。ありがとうございます。 私もなんだか同じイメージを持ってます。静的スコープでオブジェクトの寿命が永遠(無限エクステント)というのがまず初めにあって、その結果クロージャがあるという印象。 私が漠然と感じているクロージャへの解釈を、一言で表現されている様に思いました。 ここで無限エクステントに触れられていますが、実は私も、先のエントリを書いたとき、クロージャを副次的に作り出している仕様の一つとして、無限 (実装上は有限になるのでしょうが) エクステントを挙げようとは思ったのです。 しかし、レキシカルスコープとブロックの階層化 (手続きをトップレベル以外でも定義可能とか、lambda はどこでも書けるとか) を挙げることで、必然的に無限エクステントが求められることになると考えて、そちらを優先したのでした。 そして、その考えが、 例えば、レキ

    2006-06-03
    yugui
    yugui 2006/06/15
    「クロージャを導入すると環境スタックが線形リストからツリーになります。継続を導入するとアクティベーションレコードが線形リストからツリーになります。」
  • クロージャについて少し考えてみました。 - Teny's Log

    クロージャについて色々と考えてみました。 以前にも書いたのですが、そもそも Gauche をインストールした目的の一つに、クロージャの動作をもっと理解したいという目的があったので。 で、色々と shiro さんが公開されているドキュメントを読み返したり、Gauche 上で試行錯誤しながら、これまでの私の解釈には誤りがあったと思う様になりました。 これまでの私の理解では、クロージャとは、 クロージャは、ファーストクラスのオブジェクトである。なので、名前も付けられるし、関数の引数や戻り値としても利用できる。 クロージャには、(そのクロージャ生成時の) 環境が閉じ込められている。 クロージャ実行時に参照される環境は、実行時点のものではなく、クロージャ自身に閉じ込めてある環境になる。 というものでした。 これらの認識自体には誤りはないと思っている (誤りがあったらツッコミをお願いしたいです。> 識

    クロージャについて少し考えてみました。 - Teny's Log
    yugui
    yugui 2006/06/03
    closureは何で出来ているの? 「静的スコープでオブジェクトの寿命が永遠(無限エクステント)というのがまず初めにあって、その結果クロージャがある」...それから素敵なもの全部。
  • http://www.fobj.com/hisa/diary/20060519.html

    yugui
    yugui 2006/05/19
    Gaucheのobject-apply
  • Scheme:OnLisp

    On Lisp Paul Graham の著書でマクロのことが満載の。ただし Lisp で書いてある。 文中気になったコードをSchemeで書いてみるコーナー。 (セクションタイトルその他の邦訳は 野田さんの邦訳 をそのまま引用させてもらいます) マクロのツボ マクロはどのように、そしてなぜ違うのかを知ることは、マクロを正しく使うための鍵だ。 関数は結果を生むが、マクロは式を生む。----そしてこの式が評価されると結果を生む。 (「7 マクロ」から) マクロの引数は式であって値ではないことを忘れてはならない。 (「10.1 評価の回数」から) On Lispマクロのツボ5.1 Common Lisp は進化する5.3 関数の値のメモワイズ5.4 関数を合成する5.5 Cdr 部での再帰5.6 部分ツリーでの再帰7.1 マクロはどのように動作するか7.3 単純なマクロの定義7.5 引数リス

  • http://www.fobj.com/hisa/diary/20060514.html

    yugui
    yugui 2006/05/16
    iota
  • http://www.fobj.com/hisa/diary/20060515.html

    yugui
    yugui 2006/05/16
    へー。
  • もうひとつの Scheme 入門

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    yugui
    yugui 2006/05/16
  • Scheme:たらいまわしべんち

    たらいまわし関数Haskell (hugs December 2001版)Ruby (1.8.0-preview2)Gauche (0.6.8)クロージャ版delay/force版クロージャでは何故計算量が減らないか議論 たらいまわし関数 tarai(x, y, z) := y if x <= y tarai(tarai(x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)) otherwise eagerに評価すると、不要な枝の先の先まで計算してしまって大いなる無駄となる。 lazy evaluationの利点が光る一品である。 参考: 竹内郁雄 どう転んでもLisp WikipediaJa:竹内関数(WikipediaEn:Tak (function)) たらいまわし関数 たらいまわしべんち Haskell vs Ruby たらいまわしべんち最終

    Scheme:たらいまわしべんち
  • http://www.tomapd.net/blog/2005/11/09/18/40/06

    yugui
    yugui 2006/04/25
  • Gauche の拡張ライブラリでクラスを定義する - tomapd == 22%

    Gauche の拡張ライブラリで、自分でクラスを定義する方法、というよりメモとしてのテンプレート。正しい手順か不明だけど、とりあえず動く。 安直だけど、"clos" という名前の拡張ライブラリを書くとして、Scheme で書くと次のような定義になるようにする。 (define-class <person> () ((name :init-value "Anonymous") (age :init-value 20)))拡張ライブラリのヘッダファイル clos.h の宣言。 typedef struct ScmPersonRec { SCM_HEADER; ScmObj name; int age; } ScmPerson; SCM_CLASS_DECL(Scm_PersonClass); #define SCM_CLASS_PERSON (&Scm_PersonClass) #define

    Gauche の拡張ライブラリでクラスを定義する - tomapd == 22%
  • GaucheによるSchemeプログラミング

    No contributions on Sunday, June 19, 2022 No contributions on Monday, June 20, 2022 No contributions on Tuesday, June 21, 2022 No contributions on Wednesday, June 22, 2022 No contributions on Thursday, June 23, 2022 No contributions on Friday, June 24, 2022 No contributions on Saturday, June 25, 2022 No contributions on Sunday, June 26, 2022 No contributions on Monday, June 27, 2022 No contributio

    GaucheによるSchemeプログラミング
  • 独習 Scheme 三週間 Teach Yourself Scheme in Fixnum Days

    A practical introduction to the programming language Scheme

    yugui
    yugui 2006/04/17
    まとめ。
  • [scheme][java] JavaベースのScheme処理系 ひ日誌(2006-04-12)

    _ [rubycocoa] Intel MacRubyCocoa Intel MacRubyCocoa を使って開発してる日人の方のブログ「何気なくIntel iMacを買ってしまったWindowsユーザの奮闘記 」を見つけました。RubyCocoa開発メンバー全員 Intel Mac を持っていない(=動作確認できない)ので、大変貴重な情報でありがたいです。 _ [scheme][java] JavaベースのScheme処理系 オレンジニュースやtextfile.orgで、SISCというJavaベースのScheme処理系が紹介されていますが、The Kawa language framework というものもあります。 Javaベースの社内システムを開発しているScheme好きの友人(私にScheme、LispやSICPの存在を印象づけた人です)がいるのですが、人が実装を

  • SchemeとActor理論

    この言語は、MITの二人の聰明な人間がしていた大きな論争にはじまります。 それは、私がMITに学生として来るちょっと前のことでした。 この論争というのは、Carl Hewittと、 新しく学生として入ったGerry Sussmanの間に起こったものです。 Guy L. Steele Jr.「Scheme 過去・現在・未来 前編」 (bit vol.28,No.4 1996 4月号) あれは玉突きだね。.....いや、というよりはキャッチボールだ 北村薫「六の宮の姫君」 Actorに基づく言語 メッセージ送信 アクターにメッセージを送る。 メッセージを受け取ったアクターは、別のアクターにメッセージを送る。 以下同様。 例えば「1と2と3からなるメッセージをアクターaに送る」という事を [a 1 2 3] と書く事にする。 アクターaはメッセージを受け取ると、別のアクターにメッセージを送る。