#多値がうまくはまるケースのひとつに、fold2とかmap-accumとか、高階関数としてn-in m-outを再帰構造の中にはめ込む場合ってのがあると思うんですよね。あの感じをうまく図にできたらおもしろいと思うんですが。
#再帰って自分から自分への投影だから、面を複数にして影を落としてるように、とかもうひとつ次元を増やさないと難しいかな。
##コミットしました。まはろー>(び)
#test でパターンマッチするにはどうしたらいいかなあと思って、こんなのを書いてみました。
#(define (check-match pat expr)
(guard (exc (else #f))
(eval `(match (quote ,expr) (,pat #t)) (interaction-environment))))
(test* "check-match"
'(_ _ (1 2 (? string?)))
'(abc def (1 2 "34"))
check-match)
#でもすでにありそう……。
#なんか eval するのが無駄な気がするんですけど、もうちょっとすっきりかけない物でしょうか?
#パターン--ここでは(_ _ (1 2 (? string?))--はマクロによって解釈される「構文の世界の要素」だけど、手続きであるcheck-matchが受け取れるのは「実行の世界の要素」なので、その世界のずれを吸収するためにevalが必要になります。eval wo
#evalを避けたければ「構文の世界の要素」を構文の世界で受け渡すしかないので、test-matchのようなマクロを作るしかないですね。
#なるほどなるほど。最近 Node.js ばっかり書いててマクロとか継続が恋しくなってきたので、またちょっと Gauche をさわってみてました。
#Node.jsって手動CPS変換してるみたいな感じ? (←偏見)
#いやまさにそんな感じです! async っていうライブラリを使うとだいぶましになるんですけど、それでもいちいち function をかかないといけないので。 https://github.com/caolan/async