Some 3
is printed as Some 3
, but Some ()
is printed as !Some
.
I'm guessing that there's some logic to pretty-print unit being applied to a thunk (a function) that is also being applied to type constructors.
> Some 3
> Some ()
You can also see this applied to custom type constructors.
structural type Wrapper a = Wrapper a
.> add
> Wrapper 3
> Wrapper ()