added the sub combinator from Hask