lynx   »   [go: up one dir, main page]

タグ

programmingとschemeに関するyouzのブックマーク (13)

  • Scheme:CPS

    pitecan.comへの移転のためか、増井さんちのWiki掲示板は以前のコンテンツがなくなっているようなので、Google cacheから転載します。-- SHIMADA (2003/07/26 05:41:15 PDT) 転載ここから ---- 「普通の奴らの上を行け」の追記文に出てくる、WebBasedアプリケーションと継続について。 継続と聞くとSchemeのcall/ccを連想するかもしれませんが、むしろここで重要なのは、「継続渡しスタイル(Continuation Passing Style, CPS)」です。CPSそのものは、 PerlでもRubyでもJavaでも書けます。どっちかというと、普通の手続き指向から考え方を変えるのがポイントなんで。 CPSのポイント。手続きは呼び出したら戻ってきません。行ったっきりです。ですから、その手続きの後で何か別のことをやりたいなら、「その

    Scheme:CPS
  • List comprehensions and pattern matching

  • impromptu

    Impromptu is a Lisp language environment. More specifically a Scheme environment (a member of the Lisp family of languages). The Impromptu tutorials do not provide information on the Scheme language. For a brief introduction look here, here or here. For full texts look here, here and here. If this is your first time using impromptu you can watch a VERY brief video introduction here Making it go Bi

    youz
    youz 2008/10/01
    mac版Avisynth?? Schemeで書くらしい。
  • Welcome to the SICP Web Site

    Wizard Book n. Hal Abelson's, Jerry Sussman's and Julie Sussman's Structure and Interpretation of Computer Programs (MIT Press, 1984; ISBN 0-262-01077-1), an excellent computer science text used in introductory courses at MIT. So called because of the wizard on the jacket. One of the bibles of the LISP/Scheme world. Also, less commonly, known as the Purple Book. from The New Hacker's Diction

  • Common LispとSchemeの多値の違い (リリカル☆Lisp 開発日記)

    Common Lispでは多値を必要としない場面で多値(正確には2個以上の値)が返された場合、 最初の値が使用され、後は捨てられます。 (list 1 (values 2 3)) => (1 2) ここまでは知っていたんですが、同様に多値を必要としない場面で0個の値が返された場合、 nilが使用されることが仕様で決まっていることを知りました。 (list 1 (values 2 3) (values)) => (1 2 nil) なんでもしっかり決まっているのがCommon Lispのいいところですね。 一方、Schemeはどうなっているかというと、 Schemeのvaluesは次のように定義できます。 (define (values . things) (call-with-current-continuation (lambda (cont) (apply cont things

  • Scheme でつくるプロキシ・サーバー - (new Hatena).blog()

    私は Winamp という mp3 プレイヤーを愛用しています。特に、ウェブ上の mp3 ファイルをストリーミングのようにイン・メモリーで再生できるのが便利で (キャッシュファイルを作りません)、ポッドキャストなどはダウンロードせず直接 URL を入力して聴くことが多いです。 ただ、この方法で聴けない場合も当然あります。認証が必要であったり、動的に URL が生成されたりするような、シェアリング/ホスティング系のサービスなどです。 それを無理やり聴けるようにしてみました。 Icy Scheme と表示されているのがそうです (括弧内は URL の最後のスラッシュ以降の部分 (ここではファイル ID) です)。 以下、このサーバーの作り方を解説していきます。 まずは、以前文字列連結の話題でご紹介した関数を再掲します: ;; Adapted from: ;; http://srfi.schem

    Scheme でつくるプロキシ・サーバー - (new Hatena).blog()
  • Schemeの勉強になるマクロの例 - higepon blog

  • Scheme:多値

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

    Scheme:多値
  • SICPを読む(99) 問題 3.10 - 局所変数の入れ物とフレーム - ボクノス

    うぅん。SICPの説明がなんか納得いかない。 問題 3.10 make-withdrawのletをlambdaに書き直して、環境モデルを書き直す問題。 (define (make-withdraw internal-amount) ((lambda (balance) (lambda (amount) (if (>= balance amount) (begin (set! balance amount) amount) (error "Insufficient funds.")))) internal-amount)) lambdaの引数が環境を生み出すんだから、make-withdrawを呼び出した時の環境はこうなってて、 (define W1 (make-withdraw 100)) (define W1 (lambda (internal-amount) .. (define W1

    SICPを読む(99) 問題 3.10 - 局所変数の入れ物とフレーム - ボクノス
  • 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が無いのか
  • 言語開発合宿での成果物:jsでScheme - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

    09/21-23の間、言語開発合宿に参加してきました。 最初は恐ろしくて参加をためらっていたのですが、ujihisaという人の執拗な誘いもあって思い切って参加してみたところ大変楽しかったです。素敵な会にお誘いいただきありがとうございました。情報科学系のすごい先輩方と知り合いになれて嬉しかった! 私は当初の予定ではオリジナルの言語を作る予定だったのですが断念、結局jsでSchemeなどをつくっていました。Lisp/Scheme系言語は実装が簡単なため巷に満ち溢れていますが、まあそんなことはどうでもいいですね! 一応期限内に完成して継続と末尾再帰最適化まで実装できたので面目は保たれました。たぶん。 詳細な説明は後日行いますが、とりあえず発表資料とブラウザで動くデモを公開したいと思います。 デモ:Javascript Scheme コンソールって書いたとこの下のほそいのに字を打ってエンターを押す

    言語開発合宿での成果物:jsでScheme - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
  • Gauche:循環リストの読み書き

    循環や共有構造を持つS式 循環や共有構造を持つS式の表現は、srfi-38で決められている。 この表記はCommon Lispから取ったもので、たとえば次の2つの式: (let ((x (list a))) (set-cdr! x x) x) (let ((x (cons 'a 'b))) (cons x x)) によって作られる構造は、それぞれ次のように記される。 #0=(a . #0#) (#0=(a . b) . #0#) #n= でもってオブジェクトにラベルをつけ、 #n# で参照する Gaucheは、version 0.7.1現在、write* による表示のみサポートしているが、 読み込みはサポートしていない。 近いうちにサポートしたいので、ここで色々考えてみる。 問題点 - srfi-10 vs srfi-38 循環リストの読み込みは、使えるデータ型が決まっていれば難しくない。

    Gauche:循環リストの読み書き
  • Route 477(2008-02-12)

    ■ [rails] Railsで緯度経度(というか小数)を扱うときのTips なんか find_by_lat_and_lng(lat, lng) とかしても1件も見つからないという現象が発生して、 チャットで聞いてみたら、どうも:floatではなく:decimalを使えばいいらしい。 Rails の migration ファイルで decimal 型のカラムを作成する : 僕は発展途上技術者 なんでかというと:floatでは誤差が発生するから。:decimalだと、小数を文字列化して保存するので誤差が発生しないらしい。 MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.2.1 数値型 floatは「小数の近似値を保存する」と思った方がいいのかな。 ■ [scheme] クロージャだけでオブジェクト指向が実現できるらしいよ Gauche のオブジェクトのなかみ -

    Route 477(2008-02-12)
  • 1
Лучший частный хостинг