Support generative functor syntaxes

Closes #4