noether-0.0.1: Math in Haskell.

Safe HaskellNone
LanguageHaskell2010

Noether.Lemmata.TypeFu.Map

Documentation

type family Nub t where ... Source #

Equations

Nub '[] = '[] 
Nub '[x] = '[x] 
Nub ((k := v) ': ((k := w) ': m)) = Nub ((k := Combine v w) ': m) 
Nub (x ': (y ': s)) = x ': Nub (y ': s) 

type family Sort (xs :: [k]) :: [k] where ... Source #

Equations

Sort '[] = '[] 
Sort (x ': xs) = (Sort (Filter False x xs) ++ '[x]) ++ Sort (Filter True x xs) 

type (<+>) m n = TMap (m ++ n) Source #

type TMap m = Nub (Sort m) Source #

type TMap' m = Sort m Source #

data k := v infixr 4 Source #

Instances

type Cmp * ((:=) k1 Symbol k _1) ((:=) k2 Symbol k' _) Source # 
type Cmp * ((:=) k1 Symbol k _1) ((:=) k2 Symbol k' _) = CmpSymbol k k'

type family (m :: [k]) \\ (c :: Symbol) :: [k] where ... Source #

Equations

'[] \\ _ = '[] 
((q := _) ': m) \\ q = m \\ q 
(p ': m) \\ q = p ': (m \\ q) 

type family Lookup (m :: [k']) (c :: k) :: Maybe v where ... Source #

Equations

Lookup '[] k = Nothing 
Lookup ((k := v) ': _) k = Just v 
Lookup (_ ': m) k = Lookup m k 

type family Lookup' (m :: [k']) (c :: k) :: v where ... Source #

Equations

Lookup' ((k := v) ': _) k = v 
Lookup' (_ ': m) k = Lookup' m k 

type family Combine (a :: v) (b :: v) :: v Source #

Instances

type Combine v a a Source # 
type Combine v a a = a

type family Member (c :: k) (m :: [Type]) :: Bool where ... Source #

Equations

Member _ '[] = False 
Member k ((k := _) ': _) = True 
Member k (_ ': m) = Member k m