2008-01-09
■ [scheme] SRFI萌え
SRFIってのはSchemeの拡張ライブラリを定めたものなんだけど、リスト を見ると結構言語機能のコアに近いものが並んでいたりする。
で、各SRFIにはリファレンス実装のコードが載ってるんだけど、これがほとんどScheme自身で書いてあるのね。
言語コアはすごく小さいけど言語の拡張がユーザレベルでできるってのはやっぱ格好いいなぁと。
srfi-6(文字列を入出力ポートとして扱うライブラリ)とかSchemeレベルでどうやんの?と思ったら、 read-charとかwrite-charとかを全部再定義してた*1。なるほどなぁ。
*1 正確には、再定義というかラップしてる
■ [biwascheme] ポートを導入した
Schemeでは入出力は全部「ポート」を介して行うことになっているので、それっぽいコードを書いてみた。
(define sp (open-output-string)) (write '(1 2 3) sp) (display "hoge" sp) (print (get-output-string sp)) ;=> (1 2 3)hoge
こんなコードが動くようになった。
そのうち、ネットワーク上のファイルをopenしたり、ローカルのファイルにwriteしたり*1できるようにしたい。
*1 TiddlyWikiがやってるんだから、OS/ブラウザ依存な方法を使えばできるはず