A more general approach is to support general application of functions. The current lazy operations could be type aliases.