正規表現と多値を実装 - Scheme VM を書く
鬼車を利用して正規表現サポートをさくっと実装。
((#/abc/ "123abcdef") 'after) => "def"
ついでに多値を実装。
(call-with-values (lambda () (values 1 2 3)) (lambda (a b c) (+ a b c))) => 6
多値は後回しにしようかと思っていたのですが R6RS の (open-string-output-port) の戻り値が2つあるため急いで実装。
1. port
2. 取り出し手続き
取り出し手続きは SRFI-6 でいうところの get-output-string です。
取り出し手続きを返すというのは今までなかった気がする。それがありなら input-port などの read/read-char とかも返してくれてても良い気がする。
いやだめか明示的に open しないものがあるな。
なぜここだけ手続きを返すんだろう。うーん。なんだか気持ち悪い。