Interface with user-defined match monad?
if there's a match
in scope, we use this as the match strategy, assuming it conforms to MatchStrategy as defined below:
(matchTreeMaking: StringAdd).self
(matchTreeMaking: StringFormat).self
(matchTreeMaking: ArrowAssoc[MatchTreeMaking]).x
(Since version 2.10.0) Use leftOfArrow
instead
(matchTreeMaking: Ensuring[MatchTreeMaking]).x
(Since version 2.10.0) Use resultOfEnsuring
instead
Translate our IR (TreeMakers) into actual Scala Trees using the factory methods in MatchCodeGen.
The IR is mostly concerned with sequencing, substitution, and rendering all necessary conditions, mostly agnostic to whether we're in optimized/pure (virtualized) mode.