Hoge: aaa Hoge: bbbのように、同じ名前のキーで複数の値があっても、「'(("hoge" "aaa") ("hoge" "bbb"))」のように、まとめてくれない。
(with-error-handler (lambda (e) #?=(current-output-port) (display "cannot displayed")) (lambda () (with-output-to-string (lambda () (error "hoge")))))「cannot displayed」は、with-output-to-stringの出力portの中に書き込まれる。
(let1 old-output-port (current-output-port) ....とでもして、明示的にold-output-portを使うようにする。
Shiro: srfi-34, srfi-18の仕様で、「exception handlerは exceptionが起きた場所のdynamic environmentで呼ばれる」ことが規定されています。current-output-portもdynamic environmentの一部なので、ここは変えないのが正しいという解釈です。
(cgi-main proc-hogehoge :on-error report-error)
(with-error-handler report-error (lambda () ... ))のようにすればいい。但し、report-errorは#<undef>を返すので、with-error-handlerの外から続行する事に注意。
gosh -e '(print (* 30 24 60 60))' -Eexit gosh -E 'print (* 30 24 60 60)' -Eexit
(with-module user *program-name*)