The fold defined above is a right fold. As for defining other general utilities, this version of fold can be used to define any function that uses a right fold. For example:
(def len (xs)
(fold (xy (+ y 1)) 0 xs))
(def sumlength (xs)
(fold (fn (n (x y)) (list (+ n x) (+ 1 y))) '(0 0) xs))
Graham Hutton has written an excellent paper on fold called
"A tutorial on the universality and expressiveness of fold"
which includes these and other definitions.