For the record only, actual definitions are provided :<|> and :> .
-- that really like a pair of an 'a' and a 'b'... -- that can be chained in a nice way, as opposed to nested pairs. data a :<|> b = a :<|> b data a :> b
The latter does not have a constructor, because we do not need it when combining request handlers together, while we reuse the symbol :<|> when we glue several request handlers together at the value level, as opposed to matching descriptions for several endpoints on type level, where we also use the operator :<|> . In the latter case, we refer to the constructor :<|> -the-type, whereas when we use it on handlers, we refer to the constructor :<|> -the-data.
source share