 values, otherwise the compiler will infer the literal (non-opaque) type.\\n\\n## Structural sum types\\n\\nCurrently, you can define sum types like this:\\n\\n```\\ntype Fruit\\n  = Apple\\n  | Banana\\n```\\n\\nThis type is nominal. You cannot define a function that accepts any type as long as it has an `Apple` constructor, or as long as it is a superset of `Fruit`. Neither can the compiler infer the type based on usage. It must be defined.\\n\\nThis is in contrast to how records work. Records are structu