Gauche > Archives > 2016/10/29

2016/10/29 02:37:04 UTCkaki
#
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 も同様におかしい気がします。
2016/10/29 02:52:01 UTCkaki
#
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: (略)
2016/10/29 03:12:43 UTCshiro
#
er-macro-transformerが実行時モジュールを参照するようになってるのがまずい気がする
2016/10/29 03:17:03 UTCshiro
#
「er-macro-transformerの展開結果が」、だな
2016/10/29 03:35:18 UTCshiro
#
>齊藤さん、いくつかhttpsサイトを見てみると、大抵cipherがAES_128_GCMなんですが、そのサイトはAES_256_GCMになってますね。他にAES_256_GCMなサイトないかな…
#
あー、AES_256_GCMなサイトみつけたけどうまくいった。ということはこれが原因ではない
2016/10/29 03:54:09 UTCkaki
#
ついでに気付いたんですが、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>
2016/10/29 04:06:05 UTCkaki
#
$ 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>
#
隙の生じぬ二段構え
2016/10/29 04:15:34 UTCkaki
#
REPLで直に select-module した時がファイルで eval select-module する時に相当すると考えると、これで合っているのかな
2016/10/29 04:18:06 UTCshiro
#
select-moduleだけセマンティクスがちょっと特別で、アクロバティックに処理してたような覚えがあります。