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 viarun
in 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