You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					28 lines
				
				609 B
			
		
		
			
		
	
	
					28 lines
				
				609 B
			| 
								 
											3 years ago
										 
									 | 
							
								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))
							 |