##TODO list
1/3/2016 Goal: End game
- Figure out recursive functions (evalArg? why isn't fold working")
- Tests for lexical scoping
- Figure out stdlib integration into exec
- Write standard library chapter
- Write testing chapter
- Add functions for io manipulation (readFile, execute file, writeToFile, etc)
- Write IO chapter
11/11/2016 (Goal: Write tutorial chapters 00 to 04)
- Make sure resources from ./sources/* are added to introduction
- Balance intro/overview material between chapters
- Figure out how Parser is constructing types around m_parens
- Clean up Parser, remove uneeded variables decide if m_* or Tok.* should be used.
- Replace String with Text in all LispError
- Make LispError diversity and usage consistent throughout project
- Outline Eval chapters
- Write Eval Chapter
- check lambda lexical scoping (in both EnvCtx in Lambda and partial applyLambda)
- Outline Prim chapters
- Write Prim Chapter
- Write Error Chapter
- Integrate test framework into narrative to demonstrate features of presented code.
- Find an alternative to the ExceptT error IO a
11/1/2016: Goal: Finish Code for initial release (chapters 0-4, enough code for REPL to work & turing completeness)
now that the parser is out of the way, we can focus on some fun stuff:
get the following to work:
- eval w/ two args for: + - * ++ cons cadr quote
- eval w/ multiple args (fold version?)
- boolean,#t,#f,equals,not equals, if statement
- nested statements
- let statement
- lambda expressions
- begin function
- eval body to work when 2) let/lambda, support define statements
- io on files(read/write), read file to String, write string to file
- eval body to work when 1) reading files
- Test read/parse/eval files as script
- evalBody like define
- write :: LispVal -> T.Text
- read :: T.Text -> LispVal