Hi Andrew "Spot the difference" data Property x y = forall s. Property s (x -> s -> s) (s -> y) data Fold b c = forall a. F (a -> b -> a) a (a -> c) The later is from: http://squing.blogspot.com/2008/11/beautiful-folding.html Max Rabkin's is is closer to the original argument ordering of foldl. Best wishes Stephen