Tuesday February 22, 2005
Day 22: Many hackings
I think I'll cease to say "today is the most productive day since Day 1", because today is, again, the most productive day ever.
Many thanks for people who've sent me questions via various channels; the Perl Monks thread is especially helpful; in it sleepingsquirrel pointed out a wonderful technique that can generate a compiler for free with quasiquoting, while reusing all current interpreter infrastructures. Now I'd need to read "targetting parrot" in the near future...
Also, in #perl6 we have solved many problems in interpreting Synopses, namely:
- The effect of "return" in parameter defaults has been determined; it returns to the caller and defeats autothreading.
- Literal syntax has been clarified as 0d1234, 0o123, \d1234, \o123, etc.
- Signature of a hypothetical call_cc specified as &code<Code>.
- Bare block as the last statement in a subroutine is always evaluated.
- CALLER:: sees global variables in caller's scope too.
There is nearly 30 checkins in the repository today. Some highlights include:
- eval and reduce are merged into a single pass that always return a Val.
- Parsec imported as Rule.hs; work has begun to integrate inside the Eval monad.
- Steve Peter provided a test case for right-associate => that creates linked lists; it's promptly implemented.
- CALLER:: in toplevel is now caught as an error. Also it sees global variables as specified above.
- &BLOCK and &CALLER_CONTINUATION (escape-only) implemented.
- An optional dot is allowed in function application syntax.
- ingy added subversion revision info to the banner.
- rgs added read-only %ENV support to Posix platforms.
- Various things (notably Code) are numified as NaN now; this is pending discussion.
See you tomorrow!