import public Language.Implicits.IfUnsolveddata Lst : Bool -> Type -> TypeNil : Lst False a(::) : {auto 0 _ : IfUnsolved True ine} -> {auto 0 _ : IfUnsolved True ne} -> a -> Lst ine a -> Lst ne aApplicative (Lst ne)Biinjective (::)Cast (List1 a) (Lst True a)Cast (Lst True a) (List1 a)Cast (Vect n a) (Lst (n /= 0) a)Foldable (Lst ne)Functor (Lst ne)Monad (Lst ne)Semigroup (Lst ne a)Show a => Show (Lst ne a)Traversable (Lst ne)Uninhabited ([] = x :: xs)Uninhabited (x :: xs = [])Either (Uninhabited (x = y)) (Uninhabited (xs = ys)) => Uninhabited (x :: xs = y :: ys)Zippable (Lst ne)Lst0 : Type -> TypeAn alias for a list that definitely may be empty.
Don't use this if you can be polymorphic on the boolean type argument.
Lst1 : Type -> Typelength : Lst ne a -> Nat.length : Lst ne a -> Nat(++) : Lst nel a -> Lst ner a -> Lst (nel || Delay ner) aindex' : (xs : Lst ne a) -> Fin (xs .length) -> aindex : Fin n -> (xs : Lst ne a) -> {auto 0 _ : n = xs .length} -> aiterateN : (n : Nat) -> (a -> a) -> a -> Lst (n /= 0) atabulateN : (n : Nat) -> (Fin n -> a) -> Lst (n /= 0) areplicate : (n : Nat) -> a -> Lst (n /= 0) aiterate : (a -> Maybe a) -> a -> Lst0 aunfoldr : (b -> Maybe (a, b)) -> b -> Lst0 arelaxF : Lst ne a -> Lst0 arelaxT : Lst1 a -> Lst ne arelaxAnd : Lst ne a -> Lst (ne && nx) astrengthen : Lst ne a -> Maybe (Lst1 a)bind : Lst nel a -> (a -> Lst ner b) -> Lst (nel && Delay ner) bbind' : Lst nel a -> Lst ner b -> Lst (nel && Delay ner) bjoin' : Lst nel (Lst ner a) -> Lst (nel && Delay ner) aap : Lst nel (a -> b) -> Lst ner a -> Lst (nel && Delay ner) bfoldrLazy : (a -> Lazy b -> b) -> Lazy b -> Lst ne a -> bfoldl1 : (a -> a -> a) -> Lst1 a -> afoldr1 : (a -> Lazy a -> a) -> Lst1 a -> areverse : Lst ne a -> Lst ne ahead : Lst1 a -> ahead' : Lst ne a -> Maybe atail : Lst1 a -> Lst0 atail' : Lst ne a -> Maybe (Lst0 a)last : Lst1 a -> alast' : Lst ne a -> Maybe ainit : Lst1 a -> Lst0 ainit' : Lst ne a -> Maybe (Lst0 a)unsnoc : Lst1 a -> (Lst0 a, a)tails : Lst ne a -> Lst1 (Lst0 a)tails1 : Lst ne a -> Lst ne (Lst1 a)inits : Lst ne a -> Lst1 (Lst0 a)inits1 : Lst ne a -> Lst ne (Lst1 a)take : (n : Nat) -> Lst ne a -> Lst (ne && Delay (n /= 0)) adrop : Nat -> Lst ne a -> Lst0 atakeWhile : (a -> Bool) -> Lst ne a -> Lst0 adropWhile : (a -> Bool) -> Lst ne a -> Lst0 azipWithStream : (a -> b -> c) -> Stream a -> Lst ne b -> Lst ne czipStream : Stream a -> Lst ne b -> Lst ne (a, b)filter : (a -> Bool) -> Lst ne a -> Lst0 amapMaybe : (a -> Maybe b) -> Lst ne a -> Lst0 bfromFoldable : Foldable f => f a -> Lst0 afromList : (xs : List a) -> Lst (not (null xs)) afromList1 : List1 a -> Lst1 atoList1 : Lst1 a -> List1 afromVect : Vect n a -> Lst (n /= 0) arangeFromTo : Range a => a -> a -> Lst0 arangeFromThenTo : Range a => a -> a -> a -> Lst0 amapFusion : (g : (b -> c)) -> (f : (a -> b)) -> (xs : Lst ne a) -> map g (map f xs) = map (g . f) xsmapExt : (xs : Lst ne {_:6143}) -> ((x : {_:6143}) -> f x = g x) -> map f xs = map g xs