todo - implement binding to c code and c libs - have pec manage the namespaces, not ghc - have pec do the type inference, not ghc - Print, Show, Eq instances - implement read-eval-print-loop interpreter (REPL) - make libraries consistently use underscore (or camel case) - make sure build deps are correct - allow operators in export lists - add import list(?) - implement downward closures(?) - haddock'ize modules - write more example code (project euler,language shootout,etc.) - add state machine optimization(?) - add warning when _ is used as a name - add check to ensure that variables are SSA - add check to prevent recursion (what about function pointers?) - allow for _ <- foo () (not just b <- foo ()) - improve compiler coverage - revisit llvm operators do determine correct flags, e.g. nuw, exact - implement unfold for containers done - update docs for release - release grm - properly create .ll files (i.e. with declare statements) - do language design doc - do compiler architecture doc - add/reinstate llvm code generation - implement filter, map, empty, fold, etc. for all containers - add deps/building to grm - Deque printing is not working - error if module name doesn't match filename - add a way to print ints - rename files to make more consistent - implement puts that doesn't tack on a newline - add -i flag to search other directories - use & and && instead of &&& and && by changing the name of and and band(?), same for or... - don't rebuild files that haven't changed (unfortunately the istrings complicate things) - add c code generation - make the inline Haskell code (i.e. '>') play nice with comments - add import "as" - add qualified names - make read only pointers - datatype: string buffer - datatype: stack - implement prelude/ other library functions - generate Counts, etc. in separate files - get test infrastructure in place - get coverage infrastructure in place - make Bool work in case exp (make it constructed like all the rest) - get arrays working - add ascription - fix operator precedence - add top level type declarations for functions - make code generation easier to read/debug - make pretty printer robust - call external Haskell pretty-printer for generated code - consider removing module keyword. Decided to keep it. That way we can process streams, not just files. - add the ability to generate arbitrary sized integers and words (e.g. I16, W64) (add boilerplate generation to pec.hs) - add exports - get variants working - get tuples working - get records working - added arithmetic ops - added bitwise ops - make top level (non-procedure) values work - add array initializer that takes a count and a value - implement function pointers - take all non-essential things out of Base and put them into pec libraries - make library implementation easier by integrating haskell code into .pec files - create separate .ll files and cat them together - add rebuild all flag