Copyright | Copyright (C) 2015 Kyle Carter |
---|---|
License | BSD3 |
Maintainer | Kyle Carter <kylcarte@indiana.edu> |
Stability | experimental |
Portability | RankNTypes |
Safe Haskell | None |
Language | Haskell2010 |
A singleton
-esque type for representing the removal of a subset of a type level list.
Documentation
data Difference :: [k] -> [k] -> [k] -> * where Source #
ØD :: Difference as Ø as | |
(:-) :: !(Remove bs a cs) -> !(Difference cs as ds) -> Difference bs (a :< as) ds infixr 5 |
Witness ØC (WithoutAll k as bs cs) (Difference k as bs cs) Source # | |
TestEquality [k] (Difference k as bs) Source # | |
WithoutAll k as bs cs => Known [k] (Difference k as bs) cs Source # | |
type WitnessC ØC (WithoutAll k as bs cs) (Difference k as bs cs) Source # | |
type KnownC [k] (Difference k as bs) cs Source # | |
diffLen :: Difference as bs cs -> Length bs Source #
elimDifference :: (forall xs. p xs Ø xs) -> (forall x ws xs ys zs. Remove xs x ys -> Difference ys ws zs -> p ys ws zs -> p xs (x :< ws) zs) -> Difference as bs cs -> p as bs cs Source #
class WithoutAll as bs cs | as bs -> cs where Source #
withoutAll :: Difference as bs cs Source #
(~) [k] cs as => WithoutAll k as (Ø k) cs Source # | |
(Without a as b cs, WithoutAll a cs bs ds) => WithoutAll a as ((:<) a b bs) ds Source # | |
Witness ØC (WithoutAll k as bs cs) (Difference k as bs cs) Source # | |
type WitnessC ØC (WithoutAll k as bs cs) (Difference k as bs cs) Source # | |