Catalyst milestone 2: End to end proof of concept

Outputs

  • A configuration DSL for specifying domain data types.
    • LambdaBuffers Frontend supports specifying modules with type definitions with opaque, product/record and sum types. Additionally, type class definitions are supported as well as type class rule definitions using the 'instance clause' and 'derive' syntax.
    • Refer to the standard LambdaBuffers library lbf-base to get a sense of what the language looks like.
  • A compiler tool that outputs the interpreted configuration.
  • A Codegen module that takes in the interpreted configuration and outputs a Haskell+PlutusTx (was Plutarch) Cabal project containing all the types and necessary type class wiring.
  • A Codegen module that takes in the interpreted configuration and outputs a Purescript+CTL Spago project containing all the types and necessary wiring.

Acceptance Criteria

  • The generated Haskell+Plutarch Cabal project can successfully be built.
  • The generated Purescript+CTL Spago project can successfully be built.
  • All the above codegen modules are reviewed and made available in the project repository.

Evidence of Milestone Completion

Demo recordings

Demo files:

References