example.js 636 Bytes
const genfun = require('./')
const { d } = genfun.formats

function multiply (a, b) {
  return a * b
}

function addAndMultiplyNumber (val) {
  const fn = genfun(`
    function (n) {
      if (typeof n !== 'number') {
        throw new Error('argument should be a number')
      }
      const result = multiply(${d(val)}, n + ${d(val)})
      return result
    }
  `)

  // use fn.toString() if you want to see the generated source

  return fn.toFunction({multiply})
}

const addAndMultiply2 = addAndMultiplyNumber(2)

console.log(addAndMultiply2.toString())
console.log('(3 + 2) * 2 =', addAndMultiply2(3))