タグ

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

  • Top (Gauche ユーザリファレンス)

    Top (Gauche ユーザリファレンス)

  • Shiro:OvenPC

    一応スペック。 CPUはZ80A (クロック4MHz) だったと思うけど、途中でB (6MHz) にしたかも。 RAMは最終的に256KB積んでいた。BIOSでバンク切替えして、 通常は192KBをRAMディスクとして使っていた。あとドライバを組み込んだ32KBのROMも バンク切り替え。メモリ最上位のスタブルーチンを呼ぶとROMバンクに切り替えて ドライバに制御が渡る。カーネルモードとユーザモードの切り替えみたいなもんだね。 この構造のおかげで、ユーザRAMエリアをかなり広く取れた。 OSはCP/M-80だったけど、全部逆アセンブルして中身を解析し、かなり書き換えて使っていた。 当時学校でUnixを触り始めてそれに憧れていたので、標準入出力のredirectionとか パイプ(MS-DOS時代の疑似パイプね)なんかができるようにしていた。 FDDは5inchの時代。2DDとか2HDとか。

    Shiro:OvenPC
  • Gauche - A Scheme Implementation

    VMのスタック操作 (未完) GaucheのVMはごく単純なスタックマシンである。 だが、Schemeの場合、first class continuationを実現するために、 スタックフレームがヒープにセーブされたり、逆にヒープからスタックに復元されたりという 操作が入って来るので、うっかりすると自分でも混乱してバグを持ち込むことがある。 後で思い出せるように、ここに整理しておこう。 基レジスタ スタック操作に深くかかわるのは次のレジスタ群。 ScmEnvFrame *env 現在の環境のトップ。いわゆるstatic link。直接には、 最も内側の静的スコープで見えている環境を指している。 upポインタをたぐってゆけば上の環境に行ける。upポインタはNULLで終端される。 ScmContFrame *cont 現在のコンティニュエーションフレームのトップ。 いわゆるactivatio

    tanakaBox
    tanakaBox 2013/04/09
    VMのスタック操作 (未完)
  • 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
  • Scheme:コーディングスタイル

    koguroさんのとこで出た話題 コーディングスタイルifのbegin括弧の位置let式if式関数定義関数のサイズ編集環境括弧を書くタイミングemacsのキーバインディング括弧挿入のキーバインド全体的なコメントはこちら コーディングスタイル みなさんどんな風に Scheme のソースを書かれているのでしょうか。 他の人のソースを参考にしているのですが、どこかに明文化されたものがあるとうれしいです。(C みたいに K&R とか whitesmith とかいろいろ流派があるのでしょうか) とりあえず、バリエーションが出る要素を上げていってみましょ。Shiro 関連:Lisp:コメント ifのbegin もしC言語でif (...) { を if (...) (begin と書けといわれたらうんざりするでしょう。 C言語のswitch文にbreak;を書いているような気分になります。(gemma

    Scheme:コーディングスタイル
    tanakaBox
    tanakaBox 2010/01/09
    コーディングスタイル
  • 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 引数リス

    Scheme:OnLisp
    tanakaBox
    tanakaBox 2010/01/05
    SchemeでOnLisp
  • Scheme:使いたい人のための継続入門

    使いたい人のための継続入門継続渡し形式call/ccは普通の関数call-with系関数call-with-procedurecall-with-continuation-procedurecall-with-current-continuation評価順序と継続call/ccパズルお手元マルチスレッド部分継続reset/pcとcall/pc環境破壊と部分継続部分継続の使用法PRINT-AND-NEXT-REPL議論質問お手元マルチスレッドのサンプルプログラムについて 使いたい人のための継続入門 とりあえず殴り書き。 くどかったり冗長な文章になってたり、重複してたり、間違ってたり、 おおいなる勘違いをしてたり、恥をカいてたりするかもしれないけどご愛敬。 藁をもつかみたい気持ちで継続を使えるようになりたい人は読んでみてください。 ただし所詮は藁です。(w 継続渡し形式 例によって階乗fact

    Scheme:使いたい人のための継続入門
  • Arcからの挑戦

    Arc をリリースしてから2、3日経ったので、もうみなさんとも、それを耳にして何かしらの意見を持ってくれたように思う。 今のところは、評判がどうというほどでもなく、なんかウェブにでてきたみたいだねといった程度だ。 なにしろまだ日が浅いので、 Arc でプログラムした経験談といった高級なものは望むべくもないのだが、私はそれを楽しみに待っている。 それでも、的を射た反応もあった。意義をいくらかでも理解してくれている人たちからの、ファースト・インプレッションだ。 どうやら、これらには特徴的なパターンがあることに気づいた。 Arc についての主たる批判は、書くのに苦労していたわりには大したことないじゃんということだった。 Ron Garret 曰く: そして Arc について主な不満: 作るのにずいぶんかかったうえ、あんなに高い目標を立てていたわりには、 まるで、言語デザインの難問に向かってパント

    Arcからの挑戦
    tanakaBox
    tanakaBox 2008/02/28
    Arcの目指すところが見える良記事。
  • Rui

    Gaucheでこつこつプログラムを書いていました……が、最近はあまり書いていません(このごろは家でそんなにプログラムを書かなくなってしまいました)。メールはrui314@gmail.com。Twitter。 高水準スレッドライブラリ Rui:ThreadLibrary Gaucheのソースコードを読む Gaucheのソースコードは次のような順番が読みやすいんじゃないかと思うのですがどうでしょうか。 Schemeオブジェクトのメモリ上での表現を理解する ―― 次のことを頭に入れとくべき: 小さな整数、文字は1ワード(ポインタのサイズと同じ)に直接入れられている。一般のオブジェクトは、先頭の1ワードがクラスへのポインタになっている。 stringやportといったコアライブラリを読む ―― 独立性が高く、C言語で書かれた文字列ライブラリやIOライブラリとして読むことができる。 スタックの構造を

    Rui
    tanakaBox
    tanakaBox 2008/02/25
    Gaucheのソースコードを読むが参考に。僕がGaucheを読むのはまだ早い。
  • Gauche

    Shiroが開発中のScheme処理系。 Project Webpage http://practical-scheme.net/gauche/index-j.html SourceForge http://sourceforge.net/projects/gauche/ Mailing List http://lists.sourceforge.net/lists/listinfo/gauche-devel 日語 Mailing List http://lists.sourceforge.jp/mailman/listinfo/gauche-devel-jp 使用にあたっての役立ち情報 Gauche:FAQ Gauche:Bugs バグに関するメモ Gauche:WishList 要望 Gauche:LibraryWishList こんなライブラリが標準に欲しいな Gauche:Pac

    Gauche
    tanakaBox
    tanakaBox 2008/02/20
    Gaucheの実装やら、Tips。
  • Practical Scheme

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

    Practical Scheme
    tanakaBox
    tanakaBox 2008/02/13
    あぁぁぁCPSがポイントだ。
  • 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
    tanakaBox
    tanakaBox 2008/02/12
    継続渡し。おもろい。
  • gauche.night

    プレスリリースイベント概要口上説明gauche.nightブログ日時2008-03-08 (土) 17:00開場 18:00開演会場TOKYO CULTURE CULTURE(お台場)チケット出演実況中継二次会主催団体感想、反響リンク集表示的意味論と操作的意味論について プレスリリース gauche.night:プレスリリース イベント概要 口上 書籍「プログラミングGauche」がオライリー・ジャパンからついに刊行。 その発売を記念してgauche.nightが帰ってきた! SchemeとGaucheとλとS式を愛するすべての人に贈るマクロな一夜。 説明 第1部: 座談会「R6RSを斬る」 第2部: デモ大会「gauche.gong」 gauche.nightブログ http://karetta.jp/blog/gauche-night 日時 2008-03-08 (土) 17:00開場

    gauche.night
    tanakaBox
    tanakaBox 2008/01/18
    行ってみたいな。
  • 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:ポール・グレアムのエッセイと和訳一覧
    tanakaBox
    tanakaBox 2007/11/23
    ハッカーと画家を含むPGの翻訳記事一覧。穴が空くまで読みたい。
  • Scheme:多値

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

    Scheme:多値
    tanakaBox
    tanakaBox 2007/10/24
    Perlみたいな。
  • Scheme:手続きのcurry化

    tanakaBox
    tanakaBox 2007/10/22
    カリー化の話題。((pa$ * 2) 10) -> 20。srfi-26だと((cut * 2 <>) 10)
  • 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の歩き方
    tanakaBox
    tanakaBox 2007/10/14
    shiroさんによる解説。R5RSまでは仕様はある意味ミニマムを定めるもので、拡張はいくらでも好きなように、だったのが、R6RSではマキシマムも定めている箇所があり・・・という所が一番大きな変更点かな。
  • Shiro:OpenSourceMagazine0606 パワーハッカーへの道

    (これは、オープンソースマガジン2006年6月号の「ハッカー養成塾!」という コーナーに寄稿した記事の、編集前の原稿です。) パワーハッカーへの道ハッカーは書いて理解するハッカーは道具をつくるハッカーは頭の中を掃除するハッカーにも書けない時があるおわりに次回注釈ハッカー養成塾! 他の方の原稿 パワーハッカーへの道 川合 史朗 そこそこ、プログラムは書けると思う。 エリック・レイモンド(*eric)の言うとおり言語もいくつか かじってみたし、有名なソフトのソースコードも読んでみた。 でも、もっと良いコードを、ばりばり書けるようになりたいな。 稿では、ハッカーの世界の入口を通り抜けたそんな人が、 次を目指すにはどうすれば良いかを考えてみたい。 ハッカーは書いて理解する フルタイムのプログラマとして働き出して間もない頃、 ある有名なハッカーと話していて、 少し前に発表された論文の技法はどう思う

    Shiro:OpenSourceMagazine0606 パワーハッカーへの道
    tanakaBox
    tanakaBox 2007/07/19
    Shiroさんのハッカー道。
  • Scheme:Brainfuck

    Brainfuck を Scheme で実装してみる企画 bf のサンプルコード(上記ウェブページから拾ってきたもの) hello.b ハローワルド quine.b 自己コピー(ちょっと重い) quine2.b その2(結構重い) インタプリタ遊び方副作用無しバージョンコンパイラベンチマークScheme:Brainfuck:別解 インタプリタ skimu: とりあえず、モトネタです. (ソース bfi.scm) アドバイス、突っ込み大募集! obscure/esoteric バージョン募集中。 遊び方 % gosh bfi.scm hello.b Hello Wold! % gosh bfi.scm quine.b > q.b % gosh bfi.scm q.b > p.b % cmp p.b q.b Shiro: 元の仕様だとバイトの値が256でwrap aroundしないとまずいよう

    Scheme:Brainfuck
    tanakaBox
    tanakaBox 2007/07/19
    SchemeでBrainfuck
  • Scheme:TinyCLOS

    そのうち出てくる実質的なクラス定義の前に、 初期版のMAKEを与えることで、ここに示すように、 クラスメタオブジェクトのアクセッサを生成することが出来る。 ; ; Given that the early version of MAKE is allowed to call accessors on ; class metaobjects, the definitions for them come here, before the ; actual class definitions, which are coming up right afterwards. ; ; <class>および<entity-class>用 ここにはスロット数、各スロットの初期化関数、 getterやsetterへのアクセス関数は定義されていない。 class-direct-slots <class>クラスま

    Scheme:TinyCLOS
    tanakaBox
    tanakaBox 2007/07/19
    TinyCLOSのソース解説。読めるようになりたい!!