diff --git a/catamorphism.cabal b/catamorphism.cabal
--- a/catamorphism.cabal
+++ b/catamorphism.cabal
@@ -1,8 +1,8 @@
 name:                catamorphism
-version:             0.5.0.1
+version:             0.5.1.0
 synopsis:            A package exposing a helper function for generating catamorphisms.
 description:         A package exposing a helper function for generating catamorphisms.
-homepage:            http://github.com/frerich/catamorphism
+homepage:            https://github.com/frerich/catamorphism
 license:             BSD3
 license-file:        LICENSE
 author:              Frerich Raabe
@@ -16,7 +16,7 @@
 
 source-repository head
   type:       git
-  location:   http://github.com/frerich/catamorphism
+  location:   https://github.com/frerich/catamorphism
 
 library
   exposed-modules:     Data.Morphism.Cata
diff --git a/src/Data/Morphism/Cata.hs b/src/Data/Morphism/Cata.hs
--- a/src/Data/Morphism/Cata.hs
+++ b/src/Data/Morphism/Cata.hs
@@ -24,6 +24,11 @@
 >
 > -- Defines 'either :: (a -> c) -> (b -> c) -> Either a b -> c'
 > $(makeCata defaultOptions ''Either)
+>
+> -- Defines 'fold :: b -> (a -> b -> b) -> [a] -> b', i.e. 'flip foldr'. Note
+> -- that a custom catamorphism name has to be specified since '[]' is not a
+> -- valid function name.
+> $(makeCata defaultOptions { cataName = "fold" } ''[])
 
 However, catamorphisms are especially useful for recursive data structures. Consider
 the following simple example which defines a basic data type for modelling sums
@@ -70,6 +75,7 @@
 import Data.Functor ((<$>))
 
 import Language.Haskell.TH
+import Language.Haskell.TH.Syntax (mkNameG, NameSpace(TcClsName))
 
 {-|
     Values of the 'CataOptions' type can be passed to 'makeCata' in order to
@@ -96,6 +102,9 @@
 defaultOptions :: CataOptions
 defaultOptions = CataOptions ""
 
+listName :: Name
+listName = mkNameG TcClsName "ghc-prim" "GHC.Types" "[]"
+
 makeFuncT :: Type -> Type -> Type
 makeFuncT a = AppT (AppT ArrowT a)
 
@@ -114,6 +123,7 @@
 typeName :: Type -> Maybe Name
 typeName (AppT t _) = typeName t
 typeName (ConT n)   = Just n
+typeName ListT      = Just listName
 typeName _          = Nothing
 
 conType :: Name -> Name -> Con -> Type
