purescript-0.8.5.0: src/Language/PureScript/Sugar/Operators/Binders.hs
module Language.PureScript.Sugar.Operators.Binders where
import Prelude ()
import Prelude.Compat
import Language.PureScript.AST
import Language.PureScript.Names
import Language.PureScript.Sugar.Operators.Common
matchBinderOperators :: [[(Qualified Ident, Associativity)]] -> Binder -> Binder
matchBinderOperators = matchOperators isBinOp extractOp fromOp reapply id
where
isBinOp :: Binder -> Bool
isBinOp BinaryNoParensBinder{} = True
isBinOp _ = False
extractOp :: Binder -> Maybe (Binder, Binder, Binder)
extractOp (BinaryNoParensBinder op l r) = Just (op, l, r)
extractOp _ = Nothing
fromOp :: Binder -> Maybe (Qualified Ident)
fromOp (OpBinder q@(Qualified _ (Op _))) = Just q
fromOp _ = Nothing
reapply :: Qualified Ident -> Binder -> Binder -> Binder
reapply = BinaryNoParensBinder . OpBinder