// Functions include "Prelude" class Collection col where length :: col -> Integer class (Collection col) => Sequence col el | col -> el where toList :: col -> [el] fromList :: [el] -> col iter :: (el -> b) -> col -> () any :: (el -> Boolean) -> col -> Boolean all :: (el -> Boolean) -> col -> Boolean mapFirst :: (el -> Maybe b) -> col -> Maybe b findFirst :: (el -> Boolean) -> col -> Maybe el firstIndex :: (el -> Boolean) -> col -> Integer /* concatMap :: (a -> [b]) -> [a] -> [b] map :: (a -> b) -> [a] -> [b] filter :: (a -> Boolean) -> [a] -> [b] mapMaybe :: (a -> Maybe b) -> [a] -> [b] */ iterN :: (Integer -> b) -> Integer -> () anyN :: (Integer -> Boolean) -> Integer -> Boolean allN :: (Integer -> Boolean) -> Integer -> Boolean mapFirstN :: (Integer -> Maybe b) -> Integer -> Maybe b concatMapN :: (Integer -> [b]) -> Integer -> [b] mapN :: (Integer -> b) -> Integer -> [b] filterN :: (Integer -> Boolean) -> Integer -> [Integer] mapMaybeN :: (Integer -> Maybe b) -> Integer -> [b] iterVector :: (a -> b) -> Vector a -> () anyVector :: (a -> Boolean) -> Vector a -> Boolean allVector :: (a -> Boolean) -> Vector a -> Boolean mapFirstVector :: (a -> Maybe b) -> Vector a -> Maybe b concatMapVector :: (a -> [b]) -> Vector a -> Vector b mapVector :: (a -> b) -> Vector a -> Vector b filterVector :: (a -> Boolean) -> Vector a -> Vector b mapMaybeVector :: (a -> Maybe b) -> Vector a -> Vector b // Sequence types data [a] // Java: List data MList a // mutable, Java: List data Array a // Java: a[] data MArray a // mutable, Java: a[] data BoxedArray a // Java: Object[] data List a = Nil | Cons a (List a) type Vector = Array Double // Set types data Set a // immutable set data MSet a // Java: Set // Map types data Map a b // immutable map data MMap a b // Java: Map // Advanced data Stream a data FingerTree a // Classes class (Additive a a a) => Collection a where empty :: a size :: a -> Integer class Foldable c v | c -> v where foldl :: (a -> v -> a) -> a -> c -> a class (Collection c) => Indexable c k v | c -> k v where keysOf :: c -> [k] entriesOf :: c -> [(k,v)] valuesOf :: c _> [v] (!) :: c -> k -> v // Instances instance Indexable [a] Integer a instance Indexable (Array a) Integer a instance Indexable (BoxedArray a) Integer a instance Indexable (List a) Integer a instance Indexable (Map a b) a b // ideas: - sequence - map - set