{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wno-pattern-namespace-specifier #-}
module NumHask.Algebra.Patterns
( pattern Zero,
pattern One,
pattern MinusOne,
)
where
import NumHask.Algebra.Additive
import NumHask.Algebra.Multiplicative
import Prelude (Bool (..), Eq (..), (.))
pattern Zero :: forall a. (Eq a, Additive a) => a
pattern $mZero :: forall {r} {a}.
(Eq a, Additive a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
Zero <- ((== zero) -> True)
pattern One :: forall a. (Eq a, Multiplicative a) => a
pattern $mOne :: forall {r} {a}.
(Eq a, Multiplicative a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
One <- ((== one) -> True)
pattern MinusOne :: forall a. (Eq a, Additive a, Multiplicative a) => a
pattern $mMinusOne :: forall {r} {a}.
(Eq a, Additive a, Multiplicative a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
MinusOne <- ((== zero) . (+ one) -> True)