タグ

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

  • Gauche:LandOfLisp

    ちょっとだけトリッキーなのはgame-readで、Common Lispのreadは 後続の空白文字(改行文字含む)を消費するので、 > (game-repl) とタイプしてRETを打った時、入力バッファは空で、game-read はすぐに ユーザの入力待ちになるのだけれど、Gaucheのreadは後続の空白文字を消費しない。 gosh> (game-repl) とタイプしてRETを打つと、REPLは閉じ括弧まで読んですぐに(RETを入力に残したまま) game-replを実行する。その中から読まれる game-read は最初に 残っていたRETを見るので、最初のread-line で空の文字列が帰ってくる。 移植版ではこのケースへの対応が入っている。 Shiro(2016/02/02 23:30:58 UTC): 現在の開発版Gaucheでは、REPLについては後続の空白を 読み飛ばす

    Gauche:LandOfLisp
  • SRFI

    Scheme Requests for Implementation: http://srfi.schemers.org/ Final SRFIs and their support. (The number of supporting implementations are derived from the '$$srfis' macro in each implementation's page. To see which implementations support the srfi, follow the link on the srfi number.)

  • Y Combinatorを始めた理由 ---Why YC---

    Y Combinatorを始めた理由 ---Why YC--- Paul Graham, March 2006 (Rev. August 2009).[訳註1] Copyright 2009 by Paul Graham. これは、Paul Graham:Why YC を、原著者の許可を得て翻訳・公開するものです。 <版権表示> 和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。 (「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。 Copyright 2009 by Paul Graham 原文: http://www.paulgraham.com/whyyc.html語訳:Shiro Kawai (shiro @ acm.org) <版権表示終り> Paul Graham氏のエッセイをまとめた『ハッカーと画家』の

    Y Combinatorを始めた理由 ---Why YC---
  • Chaton

    Chaton (pronounced like [sha-ton], a 'kitten' in French) is a simple Comet-based Webchat server written in Gauche. Originally it is developed to host a successor of Gauche chat room on Lingr ( http://www.lingr.com ), when Lingr announced to terminate its service. Although Chaton never aims at serving in such a large scale and with tons of features like Lingr, the "look and feel" of the interface s

  • 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:たらいまわしべんち
    youz
    youz 2009/02/24
  • Gauche:AOBench

    Shiro(2009/02/23 01:52:32 PST): AOBenchベンチマークSchemeレベルでのチューニングコメント、議論 AOBench ambient occlusionとかpath tracerをいろいろな言語でやってみるというのが はやっていたらしい: AO bench 少し出遅れた感もあるが、以前から延ばし延ばしにしてきた最適化を仕込むちょうどいい 機会なのでGaucheにポートしてみた。 なお既に(R6RS) Schemeへは .mjt さんの手によってポートされている。 Schemeでもパストレース AO bench yharaさんによるGaucheへのポートもあるが、今回は.mjtさんのコードを出発点に、Gauche特有のオプティマイズをかけてゆくことにした。 最終的なコードはこちら→aobench.scm。 下にも掲載する。 ambient occlusi

    Gauche:AOBench
  • Gauche:SpellingCorrection

  • Gauche:YAGHG:Introduction

    0の状態からGaucheの概観を掴むところまでを簡単に。 前準備 コードを読み始める前にいろいろと用意をしておくと便利だ。 Gaucheをデバッグ用にコンパイル ./configure --enable-multibyte=utf-8 CFLAGS='-g -O0' GNU GLOBALなどのツールのセットアップ CHMファイルが公開されている(だいありー) libgauche.so まわりを Sapid で解析してみました。解析結果(MacOSX 10.4, ./configure --enable-multibyte=utf-8) CVSリポジトリをローカルにコピー ソースコードを読むための技術も参考に。 ターゲットコード // main.c #include <gauche.h> int main() { ScmObj obj; GC_INIT(); Scm_Init(GAUCHE_

    Gauche:YAGHG:Introduction
  • Practical Scheme

    Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を紐

    Practical Scheme
  • SRFI

    Scheme Requests for Implementation: http://srfi.schemers.org/ Final SRFIs and their support. (The number of supporting implementations are derived from the '$$srfis' macro in each implementation's page. To see which implementations support the srfi, follow the link on the srfi number.)

  • Lisp:S式の理由

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

    Lisp:S式の理由
  • naoya_t:ポール・グレアムのエッセイと和訳一覧

    ポール・グレアムのエッセイと和訳一覧 (originally maintained by naoya_t) Paul Grahamのエッセイ(原文)と、公開されている日語訳のリストです。 見つけたら or 訳したら、自由に追加して下さい。複数の訳が存在する場合は全て追加してください。 How to Get New Ideas 新しいアイデアを得る方法 (lionfan) The Need to Read 読む必要性 (Shiro) Is There Such a Thing as Good Taste? 良いセンスはあるか? (lionfan) Beyond Smart 知能を超えて (lionfan) Weird Language ヘンな言語 (Shiro) How to Work Hard 全力で働く方法 (lionfan) A Project of One's Own 自分の仕事

    naoya_t:ポール・グレアムのエッセイと和訳一覧
  • 国語を「文系」に入れるのやめにしない? - wiliki.cgi?Shiro#b25428338f9ee4006289d1aa7a92bb93

    Schemeを愛するプログラマ。 Practical Scheme http://practical-scheme.net/ Island Life (blog) http://blog.practical-scheme.net/shiro 書いたり訳したりしたもののフォローアップ 著書 『プログラミングGauche』サポートページ 翻訳書 Shiro:HackersAndPainters: 『ハッカーと画家』サポートページ Shiro:LandOfLisp: 『Land of Lisp』サポートページ Shiro:ProgrammingClojure: 『プログラミングClojure』サポートページ Shiro:ProgrammingClojure2: 『プログラミングClojure 第2版』サポートページ UnixUser, OpenSourceMagazine記事 Shiro:Uni

    国語を「文系」に入れるのやめにしない? - wiliki.cgi?Shiro#b25428338f9ee4006289d1aa7a92bb93
    youz
    youz 2008/10/01
    >「手元のデバッガが面倒を見られる層に無意識的に作業リソースを集中させてしまう」というおそれがあるようにも思う
  • Practical Scheme

    このページでは、プログラミング言語Schemeの紹介、および 自作のSchemeのライブラリやアプリケーションの紹介をしてゆきます。 特に、ファイルをパーズしてテキストファイルを生成したりとか、 プロセスを監視したりとか、ちょっとしたGUIをでっちあげる と言った、職業プログラマとしてやってく上で避けて通れない雑用に便利な ライブラリが中心になる予定です。 SchemeはLisp系の言語で、見かけはLispに良く似ています。 Lispと聞いたら人工知能用言語だとか、もう古くさい言語だとか思われることも 多いんですが、CommonLispで書かれた実用的なアプリケーションはいろいろ ありますし、Schemeも拡張言語としてそれなりに使われています。 ただ、いかんせんマイナーな言語であることは間違いなく、メンテできる人が居ない とか他に分かる人が居ないという理由で採用が見送られることがあるのは

    Practical Scheme
    youz
    youz 2008/10/01
    R5RS準拠のScheme処理系。Windows版もあり。ドキュメントもいろいろ。
  • Scheme:call/ccと副作用

    c.l.sで興味深い議論が進行していたのでメモ。 purely functional Lisp + call/cc = ? 発端は、Nils M Holmの 「Purely functionalなマイLispにcall/ccをつけてみたよ」 という投稿。 それに対し、Schemeの大御所達から 「call/ccは、副作用を生じるよ」 と突っ込みが入る。 言い替えれば、「set!などの明示的な副作用オペレータを一切持たない purely functionalなLispに、call/ccを導入すると、それはもはや purely functionalではなくなる」ということ。 実例 これは簡単な例によって示すことができる。szgygによる例: (let ((f (lambda (x) (call/cc (lambda (k) k))))) (cons (f 0) (f 0))) (f 0)の2回

    Scheme:call/ccと副作用
    youz
    youz 2008/10/01
    Call//CC
  • 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:循環リストの読み書き
  • Revenge of the Nerds

    技術野郎の復讐---Revenge of the Nerds---[訳註1] Paul Graham, May 2002. Copyright 2002 by Paul Graham. これは、Paul Graham:Revenge of the Nerds を、原著者の許可を得て翻訳・公開するものです。 プロジェクト杉田玄白正式参加テキスト。 <版権表示> 和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。 (「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。 Copyright 2002 by Paul Graham 原文: http://www.paulgraham.com/icad.html語訳:Shiro Kawai (shiro @ acm.org) <版権表示終り> Paul Graham氏のエッセイをま

    Revenge of the Nerds
  • 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
  • Gauche:$

    これはあくまで好みの問題ですし、こういった構文糖衣は濫用されがちなので 気をつけてください。けれどもスパイスのように、控えめな隠し味として使うと、 しばしばとても有用です。 It is purely a matter of taste, and also this kind of syntax sugars can be easily abused. Use with care, but it may work well if used sparingly, like spices. from GaucheRefj:$ GaucheRefe:$ Shiro (2008/02/01 00:59:54 PST): Haskell Envy Haskellの$がうらやましかったのですよ。 fn1 (fn2 (fn3 (fn4 x))) と書くかわりに fn1 $ fn2 $ fn3 $ fn4

    Gauche:$
  • Gauche:SXMLとSXPath

    SXPath の S 式表現がよくわからなかったのでまとめてみました。 -- leque(2007/02/11 01:26:05 PST) sxpath 手続き sxpath 手続きの定義は以下のようになっている。 ;; $Id: sxpath.scm,v 1.1 2003/07/22 11:22:11 shirok Exp $ ... (define (sxpath path . ns-binding) (let loop (...) (cond ((null? path) ; parsing is finished (lambda (node . root-var-binding) ...)) ...))) 手続きの直前のコメントには省略記法の展開ルールが書いてある(GaucheRefj:sxpath 参照)。 ここで path は SXPath のパス表現、ns-binding は

    Gauche:SXMLとSXPath