Saturday February 12, 2005
Day 12: Refactoring.
Lots of extremely heavy refactoring today, in order to merge up with Perl6.grammar:
- Parsec now tracks a state pad of symbols, so user-defined infix / unary operators can be correctly parsed.
- Two new primitives: rand() and eval().
- Refactored junctive operations into Junc.hs.
- Consistent try/commit/lexeme handling; detection of statement and block boundaries.
- Env now contains a list of list of Symbol as the current pad.
- Split the symbol data type into SGlobal, SMy, SOur, SLet, STemp and SState.
- A skeleton implementation of gather/take.
However I did not finish the largest refactoring (turning the whole evaluator into a StateT monad on top of a ContT monad on top of an IO monad) tonight, so I'll resume it tomorrow morning. G'night!