--- /dev/null
+{-# LANGUAGE
+ TypeFamilies,
+ UndecidableInstances
+ #-}
+module Types.Data.List.Ops
+ ( App
+ , App2
+ , App3
+ , App4
+ , App5
+
+ , Map
+ , Foldl
+ )
+ where
+
+import Types.Data.List
+
+
+type family App f a
+type family App2 f a b
+type family App3 f a b c
+type family App4 f a b c d
+type family App5 f a b c d e
+
+type family Map f l
+type instance Map f Null = Null
+type instance Map f (Cons x xs) = Cons (App f x) (Map f xs)
+
+type family Foldl f z l
+type instance Foldl f z Null = z
+type instance Foldl f z (Cons x xs) = Foldl f (App2 f z x) xs