
#13454: Operators not allowed as fields in Record Pattern Synonyms -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Keywords: | Operating System: Unknown/Multiple PatternSynonyms | Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- I want to write the following record pattern synonym {{{#!hs pattern MkOp :: Op -> Exp -> Exp -> Exp pattern MkOp {(·), a, b} <- (splitOp -> Just ((·), a, b)) where MkOp (·) a b = a · b }}} given this code {{{#!hs data Exp = Val Int | Add Exp Exp | Mul Exp Exp deriving Show type Op = Exp -> Exp -> Exp splitOp :: Exp -> Maybe (Op, Exp, Exp) splitOp (Add a b) = Just (Add, a, b) splitOp (Mul a b) = Just (Mul, a, b) splitOp _ = Nothing }}} It works fine if `(·)` is replaced by `operator`. Fields of regular data types works just fine: {{{#!hs data F a = F { (·) :: a -> a -> a, x :: a, y :: a } f F{(·), x, y} = x·y g F{..} = x·y }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13454 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler