28 lines
609 B
JavaScript
28 lines
609 B
JavaScript
|
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))
|