Gauche > Archives > 2016/11/25

2016/11/25 04:39:17 UTCkaki
#
R7RSに内部define-syntaxはあるはずと指摘されました。 https://twitter.com/tk_riple/status/801894124366528513 7.1章formal syntaxには確かにありますね。ウカツ!
#
そうすると、internal definitionは単純に letrec と letrec-syntax には展開できないということになるんでしょうか。
2016/11/25 05:22:53 UTCkaki
#
http://twitter.com/dico_leque/status/802014976797851650 なるほど。上の例はR7RS的エラーっぽいですね。お騒がせしました。ご指摘いただいた方々ありがとうございました。
2016/11/25 12:54:11 UTCshiro
#
コード見直してたんだけどなんかかなり場当たり的に対応してるな>internal define-syntax。これlet*みたいなセマンティクスに見えるんだけど大丈夫だろうか (と自分で書いておきながら心配になる)
2016/11/25 12:58:23 UTCshiro
#
gosh> (define (Ooo? k)
        (define-syntax o?
          (syntax-rules ()
            [(_ 0) #f]
            [(_ n) (e? (- n 1))]))
        (define-syntax e?
          (syntax-rules ()
            [(_ 0) #t]
            [(_ n) (o? (- n 1))]))
        (o? k))
Ooo?
gosh> (Ooo? 4)
*** ERROR: unbound variable: #<identifier user#e?.e9b860>
Stack Trace:
_______________________________________
  0  (e? (- k 1))
        expanded from (o? k)
        at "(standard input)":22
  1  (eval expr env)
        at "/usr/share/gauche-0.9/0.9.5/lib/gauche/interactive.scm":282
#
むー、これはo?とe?がletrec-syntaxになるべきだよね?
2016/11/25 13:41:18 UTCkaki
#
そう思います。