Scheme language standardization process
(let ((unquote apply))`((unquote + (list 1 2)))) => ((unquote + (list 1 2))) ; plt-scheme
(R6RS mode) (1)
(let ((unquote apply))
`((unquote + (list 1 2)))) => (#<procedure:+> (1 2)) ; isn't it a
desired output (because of referential transparency)? (2)
(let ((unquote apply))
`((unquote + (list 1 2)))) => ((apply + (list 1 2))) ; or this
(because of macro hygiene)? (3)
After all we can rebind anything else just fine:
(let ((+ -))
`((unquote + (list 1 2)))) => (#<procedure:-> (1 2))
Can you explain why is this a desirable output? I'm just wondering if
> ...which makes the most sense to me.
this is a subtle bug in plt-scheme, my lack of understanding of R6RS
or an inherent issue with it.
After all the discussion in this thread I'm in favor of (3) (which
essentially means that UNQUOTE being an identifier). (2) would be the
behavior with keywords being matched by name. (1) is somewhere in
between.
_______________________________________________ Scheme-reports mailing list Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports