2012-01-01から1年間の記事一覧

動的環境を指定してthunkを呼ぶ

shift/reset と動的環境の関係についていろいろ考えていた時に出てきた副産物. (use util.match) (define (capture/de proc) (match (let/cc de (list (proc de))) ((r) r) (thunk (thunk)))) (define (with/de de thunk) (let/cc cont (de (.$ cont thunk)…

make-syntactic-closure の練習

(define-syntax alet1 (sc-macro-transformer (lambda (expr use-env) (let ((it-expr (cadr expr)) (var (caddr expr)) (expr1 (cadddr expr)) (body (car (cddddr expr)))) `(let ((it ,(make-syntactic-closure use-env '() it-expr)) (,var ,(make-synta…

make-syntactic-closure の free-names のイメージ

(make-syntactic-closure environment free-names form) の free-names は,let で包むイメージでいいんだろうか. (let ((x 1)) (let-syntax ((foo (sc-macro-transformer (lambda (expr env) (let ((var (cadr expr))) (make-syntactic-closure var (list …

マイナーカップキャラランク

ポケモン金銀のオリジナルルール「マイナーカップ」のキャラランクを適当に作ってみた. マイナーカップのルールはニンテンドウカップ2000を基準に以下の追加ルール: バタフリー スピアー ピジョット ラッタ オニドリル プクリン パラセクト カモネギ ベロリ…

Gaucheのリファレンスマニュアルをビルド

texi2html 1.70 が入っていたのだけどうまくいかなかった(1時間経っても終わらなかった)ので texi2html 1.82 をインストール.ソースのdoc下で make htmls で40秒程でできた.make html とするとひとまとめになったhtmlが出来上がる.texi2htmlの--splitオプ…

compute-cplを読む

Gaucheのclass.cより引用. /* * compute-cpl */ ScmObj Scm_ComputeCPL(ScmClass *klass) { ScmObj seqh = SCM_NIL, seqt = SCM_NIL, ds, dp, result; /* a trick to ensure we have <object> <top> at the end of CPL. */ ds = Scm_Delete(SCM_OBJ(SCM_CLASS_OBJECT), k</top></object>…

のゼロ元オブジェクトを作ってみた

(use gauche.collection) (use gauche.mop.singleton) (define-class <zero-collection-meta> (<singleton-meta>) ()) (define-class <zero-collection> (<collection>) () :metaclass <zero-collection-meta>) (define-method call-with-iterator ((class <zero-collection>) proc :key start) (proc (^ () #t) (^ () (err…</zero-collection></zero-collection-meta></collection></zero-collection></singleton-meta></zero-collection-meta>

R5RSの数値リテラルっぽいものをGaucheのparser.pegでパーズした(2)

前回から虚部の i の代わりに!も使えるようになったのとr進数(r>1)が使えるようになった.あと $try が足りない所があったので足したり.最早,R5RSの数値リテラルっぽいものではなくなってきている. 前回の36進数の虚部が汚いという問題.コメントも頂いた…

R5RSの数値リテラルっぽいものをGaucheのparser.pegでパーズした

R5RSの数値リテラルのサブセットを拡張したもののパーザをparser.pegで書いた.具体的には小文字しか使えないのと 123### を削って小数を10進以外でも書けるようにした感じ.あと36進数と指数マーカに^を追加. parser.pegはundocumentedでよく分からないの…