Data & function encoding

@cwgoes Do I understand correctly that we would build an option type as follows?

type SomeOptionT := CoproductT [ SomeType, Nothing ]

If we want to have option types, we probably want to include Nothing. For general ones, Just would also be useful.

Or do we have “|” s.t. we can just define further types, in the same sense that the basic definitions are introduced? If so, we should make that explicit.