Mon Feb 11 09:35:00 CET 2008
the way it works now: every console command that updates the state
store in snot.ss is a transaction. if it fails, the previous state is
maintained. something like that can be implemented differently.
what i'd like to avoid is to have to copy NS in the current
implementation. a possibility is to transparently replace part of the
NS tree with an association list. then parameters can be used to make
it looks like the let* / letrec problem wants to propagate deep into
the structure of the entire program.. why is that?
maybe i should start using a persistent object model for the store?
ok.. this is shaking up the roadmap again. TODO:
- fix the problems with macro unification
- implement reverse macro lookup properly
- think about making evaluation time concrete (entry://20071217-100727)
- work towards a cleaner state representation
about haskell and monads: looking at state management, monads somehow
solve the bookkeeping of 'current' data. this can take many forms, but
two crystallized constructs are: global and dynamic environments,
which in scheme would solve most problems involving the passing of
data outside of function arguments. thanks to the type system in
haskell, the red tape can be hidden, and all is implemented using just
EDIT: being able to use state restore on failure on the command line
level is really nice. this should not be given up. however, once the
target is being modified, errors can't be fully recovered.