fix bug in make-nlazy-array when START is empty
a small macro that does currying
refine the memoisation functions and macros

* support memoisation over integer ranges
* support memoisation over hash-table with EQUAL predicate