Scheme

gauche-gtk

Schemeをあまりに書いていなくて死にそうになったので、gauche-gtkでちまちまとGUIをつくった。

scheme-complete.elがすごい

scheme-complete.el is a single function that can be used with any Emacs scheme mode. It provides real-time, lexical-scope aware type inferencing tab-completion for any R5RS scheme, with extensibility for implementation-specific features (c…

peg-parser 記法改良

汚いコードを書き直しつつ、記法を改良。より柔軟に文法を記述できるようになりますた。しかしバックエンドは相変らずRuiさんのpeg.scmなのであった。CSVのパーサを生成するサンプルも拝借。 Record ← Field (Comma Field)* Field ← Quoted / UnQuoted Space…

PEG、あるいはPackrat Parser Generator実装のメモ

(match (parse-Foo input) ((:success value input_) (match (parse-Bar input_) ((:success value input__) ... みたいな書き方だと、最終的なパース結果の戻り値をごにょごにょするときに、アドホックな実装になりやすい。次のような書き方だと、アドホッ…

遅延評価実験

まず、こういうクラスを定義いたしまして (define-class <hoge> () ((slota :init-keyword :a :getter get-a) (slotb :init-keyword :b :getter get-b) ))次のようにREPLで実行してみる。 gosh> (define hoge (make <hoge> :a '(1 2 3) :b (get-a hoge))) *** ERROR: unb</hoge></hoge>…

今更油売り算

前に書いたのは再帰で深さ優先探索だったけど、今度は深さ優先と幅優先を切りかえられるように書いた。スタックとキュー。しかし、たまたま問題の10, 7, 3の場合は深さ優先と幅優先で同じ結果になってしまったので、他の例をば。 $ ./abura2.scm depth 12 7 …

またつまら(ry

擬音語自動生成ツールが忍び寄る機能主義によって便利になりました。コマンドに出力する擬音の数を指定することができます。 $ ./gion.scm ほぇほぇ $ ./gion.scm 5 むゎむゎ びがびが ひきひき ぶぬぶぬ びきびきふと思いついて、何の意味もなくプロセスを…

またつまらぬものを書いてしまった

擬音語自動生成ツール。かわいらしい?擬音語を自動的に生成します。擬音語じゃないかもしれない語も生成されます。使い方は、下のソースをgion.scmとかいう名前で保存して、実行権限をつけて./gion.scm とするだけ(実行にはもちろんGaucheが必要)。これで明…

あらためて油売り算

斗桶 (a) に油が 1 斗 (10 升) ある。これを等分したい。7 升枡 (b) と 3 升枡 (c) しかない。この 2 つの枡だけで、5 升ずつ等分する方法を記述せよ。この問題を解くにあたり、(a) に入っている油の容量を第 1 引数、(b) の容量を第 2 引数、(c) の容量を第…

?Ȥꤢ?????????껻

http://karetta.jp/article/blog/ll-spirit/033840 #!/usr/bin/env gosh ;; -*- coding: utf-8; -*- (use srfi-1) (use util.combinations) ;; <state> ::= (<unit> ...) ;; <unit> ::= (limit . value) ;; <search-state> ::= (<state> . <step>) = (<state> from<int> to<int>) ;; <step> ::= (from<int> to<int>) ;; ;; …</int></int></step></int></int></state></step></state></search-state></unit></unit></state>

シャッフルシャッフル

http://d.hatena.ne.jp/scinfaxi/20070703/1183447623を眺めていて (define (vector-shuffle! vec) ;; rui さんのコードのパクリ : http://d.hatena.ne.jp/rui314/20070118/p1 (do ((i (- (vector-length vec) 1) (- i 1))) ((= i 0) vec) (vector-swap! vec…