Re: porting from Ikarus to PLT
- From: Eli Barzilay <eli@xxxxxxxxxxxx>
- Date: Sat, 1 Nov 2008 06:34:01 -0700 (PDT)
On Oct 31, 11:17 pm, Abdulaziz Ghuloum <aghul...@xxxxxxxxxxxxxxxxxxx>
wrote:
Eli Barzilay wrote:
On Oct 31, 4:45 pm, Abdulaziz Ghuloum <aghul...@xxxxxxxxxxxxxxxxxxx>
wrote:
Thanks Jens for the update. I hope this suffices as an answer to Eli.
(Of course not, I didn't ask any real question...)
Sorry. It was only an incomplete sentence fragment that I
incorrectly mistook for a question in the form of a pop quiz. My
bad.
(*sigh* My guess is that you know all that, but since you keep
pulling my tongue...)
If you really need it spelled out: I think that the lack of phase
separation, or rather the intentional phase-mis-separation is not a
good idea. What you semi-jokingly described with "hey, we have the
transformer, so, we might as well make it available" is -- IMO -- a
mistake much like Perl's "hey, we know how to print the number we
might as well make it usable as a string". However, I think that in
the phase case the error is more severe: I see the two phases as
completely separate worlds, with completely separate semantics, and
the fact that some of the names coincide should not make that any
different. (And it's more than just seeing it: I'm actually using
this feature.)
You also said "As if writing syntax-case macros was not hard enough"
-- which is a good point: writing algorithms is a tough job, adding
weird puns like making numbers behave like string helps write shorter
code -- but it certainly does not help write code. It's basically the
language trying to second guess what you're trying to say, in a way
that is "mostly obvious enough" that you won't get any nasty surprises
-- and when done at the level of bindings, it can be much more
dangerous. In other words, the lack of "hey, we have a binding" kind
of guesses, and the explicit in-code mention of which bindings go in
which phase are exactly features that *help* write `syntax-case'
macros.
After all, the body of a `define-syntax' *is* in a different world
whether you like it or not (or else you must forbid separate
compilation), and if it's in a different world, pretending that it
isn't by guessing which binding goes where can make the code a little
shorter, but at the expense of hopelessly confusing some people. This
thread started from a confusion over it, from someone who seems
experienced enough to quickly get what's going on; how hard would a
`define-syntax' newbie crash? Any kind of beginner course that I have
seen (which is much more than htdp-style courses) is making things
explicit for newbies, because it helps to master things explicitly
before you can deal with a "usually-fine" implicit guess.
-- So, "as if writing syntax-case macros was not hard
enough"... exactly! -- Why complicate their lives with implicit
guessing?
As for R6RS modules being forbidden from having the same name exist at
two levels if it doesn't come from the same source... Well... As
someone once said "R6RS is \"perfect\".".
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli
Barzilay:
http://www.barzilay.org/ Maze is
Life!
.
- Follow-Ups:
- Re: porting from Ikarus to PLT
- From: Abdulaziz Ghuloum
- Re: porting from Ikarus to PLT
- References:
- Re: porting from Ikarus to PLT
- From: Eli Barzilay
- Re: porting from Ikarus to PLT
- From: Abdulaziz Ghuloum
- Re: porting from Ikarus to PLT
- Prev by Date: Re: Changing component in list
- Next by Date: Re: - which module
- Previous by thread: Re: porting from Ikarus to PLT
- Next by thread: Re: porting from Ikarus to PLT
- Index(es):
Relevant Pages
|