]> gitweb @ CieloNegro.org - hs-rrdtool.git/blobdiff - Types/Data/List/Ops.hs
improved Types.Data.Map
[hs-rrdtool.git] / Types / Data / List / Ops.hs
diff --git a/Types/Data/List/Ops.hs b/Types/Data/List/Ops.hs
new file mode 100644 (file)
index 0000000..137f226
--- /dev/null
@@ -0,0 +1,32 @@
+{-# 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