I had a laugh at this (via comp.lang.functional).