Scheme
関数合成とかで組み合わせたりした方がスマートに書けるなあという例が浮かんだけれども、そのコストが気になったりした。というか、そもそもGaucheにおいて(lambda (x) x)のコストてどんなもんだ。 gosh> (define (nest n) (let loop ((i 1) (f (lambda (x)…
なんだっけな自動で画面サイズにでっかくテキストを表示するとこまで書いた。あと[bgImage:hoge.png]とかで画像を読みこめるようにした。画像読み込みは適当。元サイズで(0,0)に描画するだけ。あと上にテキスト領域かぶると白背景で塗り潰される。 SDL_ttfと…
http://konbu.s13.xrea.com/lib/lang/scheme/image.scm そのまんま、画像を表示するだけ。sdl_helper.cはc-wrapperのexample/sdlにあるもの。IMG_Loadしてるだけだなこれ。
高橋メソッド的プレゼンツールに大事なのは、自動ででっかいテキスト表示することです。 なので画面サイズにあった大きさのフォントサイズでフォントを開きたい。でもフォントサイズの単位はpt。画面サイズの単位はpx。ptってなんだよ。 http://www.mozilla.…
http://konbu.s13.xrea.com/lib/lang/scheme/showtext.scm コマンドラインで渡された文字列を表示する簡単な例。同じディレクトリにsdl_helper.c(c-wrapperのexample/sdlにあるもの)と、SDL_ttfが開けるフォントデータをfont.ttfとして置いてください。あとu…
高橋メソッドみたいにでっかい自動ででっかいテキスト表示するところまでできた。 プログラミングGaucheを読み進めながらやっているので、書いてる時間が違う部分で全然違う書き方してたりすると思う。というか、Schemeのコードて書き方固まるほど書いたこと…
gauche.nightで話してきたことを、卒研配属された研究室の合宿先で話すことになった。gauche.nightと客層が全然違う(あんまプログラミング言語萌え! な研究室じゃないし)から説明とか増量とかする必要ある。とかはまあいいんですけど「それでそのSchemeとか…
http://code.google.com/p/rbdsp/クロージャ書けるようになった! たぶん! C:\hoge\docs\rbdsp>ruby rbdsp.rb > (define mkcounter (lambda (x) (lambda () (set! x (+ x 1)) x))) mkcounter > (define c0 (mkcounter 10)) c0 > (define c1 (mkcounter 3)) …
はてダはっつけコード管理に限界を感じたのでGoogle Code Hosting使ってみた。Gmailアカウント持ってるだけで、おどろくほど簡単に使えた。選択できるLicenceにNYSLとかpublic domainとか無かったんで修正BSDライセンスになったらしいです。 http://code.goo…
明日数値計算の試験なので(まったく関係無い)Scheme実装がよく進んだ。 C:\hoge\docs\rbdsp>ruby rbdsp.rb > (+ 1 2 3 4) 10 > (eq? 3 (+ 1 2)) #t > (define ls (list 1 2 3)) ls > ls (1 2 3) > (eq? ls (list 1 2 3)) #f > ^Z good byeこのあたりまでわり…
実装言語を何故かD言語からC言語へ移行してみました。かなりアッサリできました。いかに俺がD言語の機能を有効に利用していなかったかの証拠だと思った。 記号表は適当にオープンなハッシュテーブルで書いてみました。ハッシュ関数とか超適当。GCのタイミン…
http://konbu.s13.xrea.com/lib/scm/istsp.d http://konbu.s13.xrea.com/lib/scm/istsp-20070922.tar.bz2 パーサ部分の構成を考えなおしたら、コードがかなりあっさりめに。quoteも簡単にできました。 > (+ 3 2 1 . (4 5)) 15 > '(1 2 3 '(1 2 3)) (1 2 3 (q…
コンスセル(a . b)を読めるように。あと忘れてたquote。 > (+ 3 2 1 . ()) 6 > (quote (1 2 3 . ())) (1 2 3)などと。ある程度できたんで、適当に演算実装してまわることもできるけど、まだまだ内部がいいかげんだらけなのでしない。でもやっぱりしたいよう…
内部で引数の処理がとてつもなくいいかげんだったのを、かなりいいかげんくらいにした。あとlambdaできるようにしてみた。たぶん。ああ、でも可変長引数はできるようにしてない。(lambda x ...), (lambda (x y . z) ...) みたいの。 > (define fact (lambda …
Schemeタグ付けるようなもんかよと思いつつ。syntaxぽいのもできるようにしてみた。ユーザ側から関数とかsyntax定義できないから意味無いけど。 ソースこのへん http://konbu.s13.xrea.com/lib/scm/istsp.d > (define a (+ 10 20 (* 3 8) (/ 9 3))) 57 > a 5…
ちょーみじかいScheme処理系として有名なMiniSchemeをDに移植した。たぶん動く。 http://konbu.s13.xrea.com/lib/scm/miniscm-d-20070815.tar.bz2 ほとんどそのまま移しただけ。やったのは、先日の日記に書いたScheme関数に対応する関数を書いたことと、GCま…
miniscm.cを書き換えたりしてた。 miniscm.cをGNU GLOBALでHTML化したもの(オリジナルのminiscm.c) オリジナルのMinischemeでは各種Scheme関数をswitch-caseで呼んでいる。それぞれのScheme関数はopexe_0関数からopexe_6関数のどれかに属する。 オリジナル…
ちっちゃな Scheme インタプリタMinischemeのコードをちょこちょこ読んでる。 いちおうひらメソッドの練習がてら。http://konbu.s13.xrea.com/wiki/index.cgi あんまし真面目にやってないけど。
しばらく前からちょくちょく SICP 眺めてる。読み始めた頃からけっこう Scheme に興味あるんだけど、あいつは言語としては Scheme 使ってるけど、Scheme の本じゃない。そんなことに気がつくのに結構な時間がかかりました。というわけで、SICP 読み進めても…
ウェブ上でリファレンスマニュアル的な文書ねーかなーと思った。そういえば、R5RS がある。 http://www.schemers.org/Documents/Standards/R5RS/ 気前良くそのまま印刷できる形でのファイルも提供してるし。印刷しておこう。 追記 書籍の「The Scheme Progra…
たぶんカリー化ってこんな感じのような気がする。 gosh> (define (curry p . args) (lambda r (apply p (append args r)))) curry gosh> (define hogecons (curry cons 'hoge)) hogecons gosh> (hogecons 'moge) (hoge . moge) gosh> (hogecons 'piyo) (hoge…
ちょっとずつでもやり続ければそのうち終わらーな。問題1.17から1.19
ミッシングリンクを埋めようということで、問題1.14から1.16。あんま進まんかった。眠い。もずくうまい。
前回書いたBrainFuckインタプリタはかなりおそかった。与えられたbfコードをリストとして構築しなおしてから、さあ実行、とかやってたからだろうか。リストの扱いくらいしかわからなかったからそうなったのだが。 bfのコードはそのままstringとして扱った方…
やらなければいけないレポートがあるという現実から目を逸らしてSchemeでBrainfuckインタプリタつくってたら朝になっていたのでやばい。Schemeでのまともなプログラムの書き方とかまず全然わからないのもほげ。目を背けたい事柄が無かったらたぶんわざわざSc…
問題1.14 - 1.28 気分転換したくなったのでパス!問題1.29から1.33まで。高階手続きで抽象的に楽しもうというあたりで楽しもうと思います。
大学生は好きに使える時間が多いなあと思う。12:10から16:15まで空きコマという。問題1.12、1.13をやった。
おもいがけず休日だったのでSICPの練習問題を解く。問題1.7から1.11まで。はいはい末尾再帰末尾再帰。反復的プロセスですね。このペースだといつやり終えるんだろうか。
学生のうちに読んでおけーという電波を受信したので噂に名高い、SICPことamazon:計算機プログラムの構造と解釈を読んでみる。英語版はハードカバーで固かったですが、日本語版はやわらかいですね。あと日本語なので読みやすいですね。 日本語訳がどうこうっ…
自然言語でletとletrecの違いが書いてあるのを読んでもよくわからなんだ。自分で書いてみてわかった。 書いたのは与えられたリストをconsで再帰的に定義してそのまま返すだけの関数。