fwf
by Igor Cuckovic
JavaScript
function add(a, b) {
return a + b
}
function sub(a, b) {
return a - b
}
function mul(a, b) {
return a * b
}
function identityf(num) {
return function() {
return num
}
}
function addf(a) {
return function(b) {
return a + b
}
}
function liftf(func) {
return function(a) {
return function(b) {
return func(a, b)
}
}
}
const curry = (func, a) => {
return b => {
return func(a, b)
}
}
const inc = addf(1)
const inc2 = liftf(add)(1)
const inc3 = curry(add, 1)
//console.log(inc3(5))
const twice = fun => {
return x => {
return fun(x,x)
}
}
//console.log(twice(add)(11))
const reverse = (func) => {
return (...args) => {
return func(...args.reverse())
}
}
//console.log(reverse(sub)(3,2))
const composeu = (func1, func2) => {
return num => {
return func2(func1(num))
}
}
const composeb = (fun1, fun2) => {
return (a,b,c) => {
return fun2(fun1(a,b), c)
}
}
//console.log(composeb(add,mul)(2,3,7))
const limit = (func, num) => {
return (a,b) => {
if (num >= 1) {
num -= 1
return func(a,b)
}
return
}
}
const add_ltd = limit(add, 1)
console.log(add_ltd(3,4))
console.log(add_ltd(3,4))