0 | module Data.SOP.Utils
14 | K : Type -> k -> Type
23 | data SingletonList : (vs : List a) -> Type where
24 | IsSingletonList : (v : a) -> SingletonList [v]
27 | Uninhabited (SingletonList []) where
28 | uninhabited v impossible
31 | Uninhabited (SingletonList $
a :: b :: t) where
32 | uninhabited v impossible
36 | singletonList : (vs : List a) -> Dec (SingletonList vs)
37 | singletonList [] = No absurd
38 | singletonList (v :: []) = Yes (IsSingletonList v)
39 | singletonList (_ :: (_ :: _)) = No absurd
55 | UpdateHere : UpdateOnce t t' (t :: ks) (t' :: ks)
56 | UpdateThere : UpdateOnce t t' ks ks' -> UpdateOnce t t' (k :: ks) (k :: ks')
67 | UMNil : UpdateMany t t' [] []
68 | UMConsSame : UpdateMany t t' ks ks' -> UpdateMany t t' (t::ks) (t'::ks')
69 | UMConsDiff : UpdateMany t t' ks ks' -> UpdateMany t t' (k::ks) (k::ks')
78 | data Sublist : (ks : List k) -> (ks' : List k) -> Type where
79 | SLNil : Sublist [] ks'
80 | SLSame : Sublist ks ks' -> Sublist (k::ks) (k::ks')
81 | SLDiff : Sublist ks ks' -> Sublist ks (k::ks')
91 | data EnumType : (kss : List $
List k) -> Type where
93 | ES : EnumType kss -> EnumType ([] :: kss)
97 | 0 enumTail : EnumType (ks :: kss) -> EnumType kss
105 | dispStringList : List String -> String
106 | dispStringList ss = "[" ++ fastConcat (intersperse "," ss) ++ "]"