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!