root: Contains tests and nothing elsecodegen: Codegen core. Defines algebras and default interpreters.sample: Target forrun, as well as integration tests for generated code. Can be generated viarunin the sbt console.
- Readability
- Maintainability
- Testability
- Defer effects
- Typesafe accessors for Java function calls
testSuite: Compile, test codegen, run sample codegen, compile sample, run tests inside samplecli: Useful for scripting:sbt 'cli --client ...'
- Cats' Free Monad: http://typelevel.org/cats/datatypes/freemonad.html
- Scalameta Quasiquotes: https://github.com/scalameta/scalameta/blob/master/notes/quasiquotes.md