Object Definitions

Object definitions are written using OBJECTDEF(...):

OBJECTDEF("Main") withParents("App") := BLOCK(
  LIT(0)
)

This prints as:

object Main extends App {
  0
}

Case object definitions

Case object definitions are written using CASEOBJECTDEF(...):

(CASEOBJECTDEF("C"): Tree)  // case object C