Copyright | Copyright (C) 2015 Kyle Carter |
---|---|
License | BSD3 |
Maintainer | Kyle Carter <kylcarte@indiana.edu> |
Stability | experimental |
Portability | RankNTypes |
Safe Haskell | None |
Language | Haskell2010 |
Convenient aliases and type families for working with type-level lists.
- type Ø = `[]`
- type (:<) = (:)
- type Only a = `[a]`
- type family Null as :: Bool
- nullCong :: (a ~ b) :- (Null a ~ Null b)
- nilNotCons :: (Ø ~ (a :< as)) :- Fail
- type family as ++ bs :: [k]
- appendCong :: (a ~ b, c ~ d) :- ((a ++ c) ~ (b ++ d))
- type family as >: a :: [k]
- snocCong :: (as ~ bs, a ~ b) :- ((as >: a) ~ (bs >: b))
- type family Reverse as :: [k]
- reverseCong :: (as ~ bs) :- (Reverse as ~ Reverse bs)
- type family Head as :: k
- type family Tail as :: [k]
- type family Init as :: [k]
- type family Init' a as :: [k]
- initCong :: (a ~ b, as ~ bs) :- (Init' a as ~ Init' b bs)
- type family Last as :: k
- type family Last' a as :: k
- lastCong :: (a ~ b, as ~ bs) :- (Last' a as ~ Last' b bs)
- type family ListC cs :: Constraint
- type family f <$> a :: [l]
- listMapCong :: (f ~ g, as ~ bs) :- ((f <$> as) ~ (g <$> bs))
- type family f <&> a :: [l]
- type family f <*> a :: [l]
- type family Fsts ps :: [k]
- type family Snds ps :: [l]
- type family Zip as bs :: [(k, l)]
- type family Fsts3 ps :: [k]
- type family Snds3 ps :: [l]
- type family Thds3 ps :: [m]
Documentation
appendCong :: (a ~ b, c ~ d) :- ((a ++ c) ~ (b ++ d)) Source
reverseCong :: (as ~ bs) :- (Reverse as ~ Reverse bs) Source
type family ListC cs :: Constraint Source
Takes a type-level list of Constraint
s to a single
Constraint
, where ListC cs
holds iff all elements
of cs
hold.
type family f <$> a :: [l] infixr 4 Source
Map an (f :: k -> l)
over a type-level list (as :: [k])
,
giving a list (bs :: [l])
.
listMapCong :: (f ~ g, as ~ bs) :- ((f <$> as) ~ (g <$> bs)) Source