Function prototype extensions using the Metho library:
import{curried,memoised}from'metho-function'// curried - returns a curried version of the function (created on first access)constadd=(a,b,c)=>a+b+cadd(1,2,3)// 6add[curried](1)(2)(3)// 6// memoised - returns a memoised version of the function (created on first access)expensiveFunction[memoised](a,b,c)expensiveFunction[memoised](a,b,c)// this will be a memoised run - faster// memoized - alias of memoised