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”?
Joseph