
On 19.09.21 00:30, Galaxy Being wrote:
:t Just True Just True :: Maybe Bool
What's the type of `Just`?
:t Just Just :: a -> Maybe a
So `Just` is a constructor function that takes a value of type `a` and gives you back a value of type `Maybe a`. In your example you provide a concrete type for `a` (`True :: Bool`) so the type of the result is `Maybe Bool`.
:t Left True Left True :: Either Bool b
As above what's the type of `Left`?
:t Left Left :: a -> Either a b
Again, `Left` is a constructor function that takes a single value of type `a` but now returns a value of type `Either a b`, i.e. it has two type variables. If you specify the type of `a` (again `Bool` in your example), `b` is still unspecified/polymorphic and that's why the resulting type is `Either Bool b`. Bye, Andreas