I spent a few moments confused by the fact the TypeOperators was insufficient to allow the following type to be parsed
constA :: Arrow (~>) => b -> (a ~> b)
My current intuition is that since I *can* write things like
newtype (~>) a b = A (a -> b)
there is clashing in the type operator space for “upper case” and “lower case” identifiers. Is it possible or advisable to mitigate this clash and provide some syntax for “type operator variables”?