Hi there,
why is the Zero alias replaced correctly in every form in the expression
except the case branch where it is inserted as a literal?
--------------------------------------------------------------------------------------------
(require macro-debugger/stepper-text)
(expand/step-text
#'(let ()
(define-syntax alias
(syntax-rules ()
[(_ symbol literal)
(define-syntax symbol (syntax-id-rules () [symbol
literal]))
]))
(alias Zero 0)
(alias One 1)
(letrec (
(dummyfn (lambda (c) ;;
(case c
[(Zero)
One
]
)
))
)
(if Zero One 2)
(if (eqv? '2 Zero) 4 5)
(dummyfn Zero)
)
))
--------------------------------------------------------------------------------------------
==>
(let-values:1
()
(let-values
()
(letrec-values:37
(((dummyfn)
(lambda:39
(c)
(if:40
(#%app:41 eqv?:41 c 'Zero)
(let-values:40 () '1)
(#%app:40 void:40)))))
(if '0 '1 (quote 2))
(if (#%app:45 eqv? '2 '0) (quote 4) (quote 5))
(#%app:47 dummyfn '0))))
Thanks.
____________________
Racket Users list:
http://lists.racket-lang.org/users