#gosh> (use r7rs)
gosh> (eval '(let-syntax ((%r (er-macro-transformer (^ (f r c) `(,(r 'lambda) (:key x) x))))) (%r)) (find-module 'scheme.base))
#<closure (#f :key x)>
gosh> (eval '(let-syntax ((%r (syntax-rules () ((_) (lambda (:key x) x))))) (%r)) (find-module 'scheme.base))
*** ERROR: syntax-error: extended formals aren't allowed in R5RS lambda: (略)
#eval 内の er-macro-transformer も同様におかしい気がします。
#eval でも select-module を入れるとちゃんとエラーになります。
#gosh> (eval '(begin (select-module scheme.base) (let-syntax ((%r (er-macro-transformer (^ (f r c) `(,(r 'lambda) (:key x) x))))) (%r))) (interaction-environment))
*** ERROR: syntax-error: extended formals aren't allowed in R5RS lambda: (略)
#er-macro-transformerが実行時モジュールを参照するようになってるのがまずい気がする
#「er-macro-transformerの展開結果が」、だな
#>齊藤さん、いくつかhttpsサイトを見てみると、大抵cipherがAES_128_GCMなんですが、そのサイトはAES_256_GCMになってますね。他にAES_256_GCMなサイトないかな…
#あー、AES_256_GCMなサイトみつけたけどうまくいった。ということはこれが原因ではない
#ついでに気付いたんですが、select-module を eval したときの挙動がREPLとスクリプトで違いますね。
#$ cat eval-select-module.scm
(eval '(select-module gauche) (current-module))
(print (current-module))
$ gosh eval-select-module.scm
#<module gauche>
$ gosh
gosh> (eval '(select-module gauche) (current-module))
gosh> (print (current-module))
#<module user>
#<undef>
#$ cat eval-eval-select-module.scm
(eval '(eval '(select-module gauche) (current-module)) (current-module))
(print (current-module))
$ gosh eval-eval-select-module.scm
#<module user>
#隙の生じぬ二段構え
#REPLで直に select-module した時がファイルで eval select-module する時に相当すると考えると、これで合っているのかな
#select-moduleだけセマンティクスがちょっと特別で、アクロバティックに処理してたような覚えがあります。