Changed the various function variants to base on 'fun' and then lambda, macro etc. as macros in the Prelude