singletons-2.5.1: A framework for generating singleton types

Copyright(C) 2013 Richard Eisenberg
LicenseBSD-style (see LICENSE)
MaintainerRyan Scott
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Singletons.Prelude.Eq

Contents

Description

Defines the SEq singleton version of the Eq type class.

Synopsis
  • class PEq a where
    • type (x :: a) == (y :: a) :: Bool
    • type (x :: a) /= (y :: a) :: Bool
  • class SEq k where
  • type family DefaultEq (a :: k) (b :: k) :: Bool where ...
  • data (==@#@$) :: forall a6989586621679381437. (~>) a6989586621679381437 ((~>) a6989586621679381437 Bool)
  • data (==@#@$$) (x6989586621679381438 :: a6989586621679381437) :: (~>) a6989586621679381437 Bool
  • type (==@#@$$$) (x6989586621679381438 :: a6989586621679381437) (y6989586621679381439 :: a6989586621679381437) = (==) x6989586621679381438 y6989586621679381439
  • data (/=@#@$) :: forall a6989586621679381437. (~>) a6989586621679381437 ((~>) a6989586621679381437 Bool)
  • data (/=@#@$$) (x6989586621679381440 :: a6989586621679381437) :: (~>) a6989586621679381437 Bool
  • type (/=@#@$$$) (x6989586621679381440 :: a6989586621679381437) (y6989586621679381441 :: a6989586621679381437) = (/=) x6989586621679381440 y6989586621679381441
  • data DefaultEqSym0 :: forall k6989586621679381431. (~>) k6989586621679381431 ((~>) k6989586621679381431 Bool)
  • data DefaultEqSym1 (a6989586621679381432 :: k6989586621679381431) :: (~>) k6989586621679381431 Bool
  • type DefaultEqSym2 (a6989586621679381432 :: k6989586621679381431) (b6989586621679381433 :: k6989586621679381431) = DefaultEq a6989586621679381432 b6989586621679381433

Documentation

class PEq a #

The promoted analogue of Eq. If you supply no definition for '(==)', then it defaults to a use of DefaultEq.

Associated Types

type (x :: a) == (y :: a) :: Bool infix 4 #

type (x :: a) /= (y :: a) :: Bool infix 4 #

Instances
PEq Bool # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq Ordering # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq Nat # 
Instance details

Defined in Data.Singletons.TypeLits.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq Symbol # 
Instance details

Defined in Data.Singletons.TypeLits.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq () # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq Void # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq All # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq Any # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq [a] # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Maybe a) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (TYPE rep) # 
Instance details

Defined in Data.Singletons.TypeRepTYPE

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Min a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Max a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (First a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Last a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (WrappedMonoid m) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Option a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Identity a) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (First a) # 
Instance details

Defined in Data.Singletons.Prelude.Monoid

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Last a) # 
Instance details

Defined in Data.Singletons.Prelude.Monoid

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Dual a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Sum a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Product a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Down a) # 
Instance details

Defined in Data.Singletons.Prelude.Ord

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (NonEmpty a) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Either a b) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (a, b) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Arg a b) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (a, b, c) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (Const a b) # 
Instance details

Defined in Data.Singletons.Prelude.Const

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (a, b, c, d) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (a, b, c, d, e) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (a, b, c, d, e, f) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

PEq (a, b, c, d, e, f, g) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Associated Types

type x == y :: Bool #

type x /= y :: Bool #

class SEq k where #

The singleton analogue of Eq. Unlike the definition for Eq, it is required that instances define a body for '(%==)'. You may also supply a body for '(%/=)'.

Minimal complete definition

(%==)

Methods

(%==) :: forall (a :: k) (b :: k). Sing a -> Sing b -> Sing (a == b) infix 4 #

Boolean equality on singletons

(%/=) :: forall (a :: k) (b :: k). Sing a -> Sing b -> Sing (a /= b) infix 4 #

Boolean disequality on singletons

(%/=) :: forall (a :: k) (b :: k). (a /= b) ~ Not (a == b) => Sing a -> Sing b -> Sing (a /= b) infix 4 #

Boolean disequality on singletons

Instances
SEq Bool # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq Ordering # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq Nat # 
Instance details

Defined in Data.Singletons.TypeLits.Internal

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq Symbol # 
Instance details

Defined in Data.Singletons.TypeLits.Internal

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq () # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq Void # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq Bool => SEq All # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq Bool => SEq Any # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

(SEq a, SEq [a]) => SEq [a] # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (Maybe a) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq (TYPE rep) # 
Instance details

Defined in Data.Singletons.TypeRepTYPE

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq a => SEq (Min a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (Max a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (First a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (Last a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq m => SEq (WrappedMonoid m) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a -> Sing b -> Sing (a == b) #

(%/=) :: Sing a -> Sing b -> Sing (a /= b) #

SEq (Maybe a) => SEq (Option a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (Identity a) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq (Maybe a) => SEq (First a) # 
Instance details

Defined in Data.Singletons.Prelude.Monoid

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq (Maybe a) => SEq (Last a) # 
Instance details

Defined in Data.Singletons.Prelude.Monoid

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (Dual a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (Sum a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (Product a) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup.Internal

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

SEq a => SEq (Down a) # 
Instance details

Defined in Data.Singletons.Prelude.Ord

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

(SEq a, SEq [a]) => SEq (NonEmpty a) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b -> Sing (a0 == b) #

(%/=) :: Sing a0 -> Sing b -> Sing (a0 /= b) #

(SEq a, SEq b) => SEq (Either a b) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

(SEq a, SEq b) => SEq (a, b) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

SEq a => SEq (Arg a b) # 
Instance details

Defined in Data.Singletons.Prelude.Semigroup

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

(SEq a, SEq b, SEq c) => SEq (a, b, c) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

SEq a => SEq (Const a b) # 
Instance details

Defined in Data.Singletons.Prelude.Const

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

(SEq a, SEq b, SEq c, SEq d) => SEq (a, b, c, d) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

(SEq a, SEq b, SEq c, SEq d, SEq e) => SEq (a, b, c, d, e) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

(SEq a, SEq b, SEq c, SEq d, SEq e, SEq f) => SEq (a, b, c, d, e, f) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

(SEq a, SEq b, SEq c, SEq d, SEq e, SEq f, SEq g) => SEq (a, b, c, d, e, f, g) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

(%==) :: Sing a0 -> Sing b0 -> Sing (a0 == b0) #

(%/=) :: Sing a0 -> Sing b0 -> Sing (a0 /= b0) #

type family DefaultEq (a :: k) (b :: k) :: Bool where ... #

A sensible way to compute Boolean equality for types of any kind. Note that this definition is slightly different from the '(DTE.==)' type family from Data.Type.Equality in base, as '(DTE.==)' attempts to distinguish applications of type constructors from other types. As a result, a == a does not reduce to True for every a, but DefaultEq a a does reduce to True for every a. The latter behavior is more desirable for singletons' purposes, so we use it instead of '(DTE.==)'.

Equations

DefaultEq a a = True 
DefaultEq a b = False 

Defunctionalization symbols

data (==@#@$) :: forall a6989586621679381437. (~>) a6989586621679381437 ((~>) a6989586621679381437 Bool) infix 4 #

Instances
SEq a => SingI ((==@#@$) :: TyFun a (a ~> Bool) -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

sing :: Sing (==@#@$) #

SuppressUnusedWarnings ((==@#@$) :: TyFun a6989586621679381437 (a6989586621679381437 ~> Bool) -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply ((==@#@$) :: TyFun a6989586621679381437 (a6989586621679381437 ~> Bool) -> Type) (x6989586621679381438 :: a6989586621679381437) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply ((==@#@$) :: TyFun a6989586621679381437 (a6989586621679381437 ~> Bool) -> Type) (x6989586621679381438 :: a6989586621679381437) = (==@#@$$) x6989586621679381438

data (==@#@$$) (x6989586621679381438 :: a6989586621679381437) :: (~>) a6989586621679381437 Bool infix 4 #

Instances
(SEq a, SingI x) => SingI ((==@#@$$) x :: TyFun a Bool -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

sing :: Sing ((==@#@$$) x) #

SuppressUnusedWarnings ((==@#@$$) x6989586621679381438 :: TyFun a6989586621679381437 Bool -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply ((==@#@$$) x6989586621679381438 :: TyFun a Bool -> Type) (y6989586621679381439 :: a) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply ((==@#@$$) x6989586621679381438 :: TyFun a Bool -> Type) (y6989586621679381439 :: a) = x6989586621679381438 == y6989586621679381439

type (==@#@$$$) (x6989586621679381438 :: a6989586621679381437) (y6989586621679381439 :: a6989586621679381437) = (==) x6989586621679381438 y6989586621679381439 #

data (/=@#@$) :: forall a6989586621679381437. (~>) a6989586621679381437 ((~>) a6989586621679381437 Bool) infix 4 #

Instances
SEq a => SingI ((/=@#@$) :: TyFun a (a ~> Bool) -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

sing :: Sing (/=@#@$) #

SuppressUnusedWarnings ((/=@#@$) :: TyFun a6989586621679381437 (a6989586621679381437 ~> Bool) -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply ((/=@#@$) :: TyFun a6989586621679381437 (a6989586621679381437 ~> Bool) -> Type) (x6989586621679381440 :: a6989586621679381437) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply ((/=@#@$) :: TyFun a6989586621679381437 (a6989586621679381437 ~> Bool) -> Type) (x6989586621679381440 :: a6989586621679381437) = (/=@#@$$) x6989586621679381440

data (/=@#@$$) (x6989586621679381440 :: a6989586621679381437) :: (~>) a6989586621679381437 Bool infix 4 #

Instances
(SEq a, SingI x) => SingI ((/=@#@$$) x :: TyFun a Bool -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

Methods

sing :: Sing ((/=@#@$$) x) #

SuppressUnusedWarnings ((/=@#@$$) x6989586621679381440 :: TyFun a6989586621679381437 Bool -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply ((/=@#@$$) x6989586621679381440 :: TyFun a Bool -> Type) (y6989586621679381441 :: a) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply ((/=@#@$$) x6989586621679381440 :: TyFun a Bool -> Type) (y6989586621679381441 :: a) = x6989586621679381440 /= y6989586621679381441

type (/=@#@$$$) (x6989586621679381440 :: a6989586621679381437) (y6989586621679381441 :: a6989586621679381437) = (/=) x6989586621679381440 y6989586621679381441 #

data DefaultEqSym0 :: forall k6989586621679381431. (~>) k6989586621679381431 ((~>) k6989586621679381431 Bool) #

Instances
SuppressUnusedWarnings (DefaultEqSym0 :: TyFun k6989586621679381431 (k6989586621679381431 ~> Bool) -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply (DefaultEqSym0 :: TyFun k6989586621679381431 (k6989586621679381431 ~> Bool) -> Type) (a6989586621679381432 :: k6989586621679381431) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply (DefaultEqSym0 :: TyFun k6989586621679381431 (k6989586621679381431 ~> Bool) -> Type) (a6989586621679381432 :: k6989586621679381431) = DefaultEqSym1 a6989586621679381432

data DefaultEqSym1 (a6989586621679381432 :: k6989586621679381431) :: (~>) k6989586621679381431 Bool #

Instances
SuppressUnusedWarnings (DefaultEqSym1 a6989586621679381432 :: TyFun k6989586621679381431 Bool -> Type) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply (DefaultEqSym1 a6989586621679381432 :: TyFun k Bool -> Type) (b6989586621679381433 :: k) # 
Instance details

Defined in Data.Singletons.Prelude.Eq

type Apply (DefaultEqSym1 a6989586621679381432 :: TyFun k Bool -> Type) (b6989586621679381433 :: k) = DefaultEq a6989586621679381432 b6989586621679381433

type DefaultEqSym2 (a6989586621679381432 :: k6989586621679381431) (b6989586621679381433 :: k6989586621679381431) = DefaultEq a6989586621679381432 b6989586621679381433 #