// ${name: functional}
// ${title: 函数式编程初探}
import console;
// 简单的高阶函数
forEach = function(t,f) for(k,v in t) f(v,k)
times = function(n, f) for(i=1;n) f(i)
unless = function(p,f) if(!p) f()
var t = {1,2,3,4,5};
forEach(t, lambda(v) unless(
v%2, λ() console.log(v, " is even")
))
times(10, lambda(n) unless(
n%2, λ() console.log(n, " is even")
))
console.log("--------------------------------")
// 函数调试
tap = function(v){
return lambda(f) unless (
!(type(f)==="function")
,λ() console.dumpJson (
["参数值"] = v,
["返回值"] = f(v) || "No return values!"
))
}
forEach(t, lambda(v) tap(v)( math.sqrt ))
console.pause(true);
// https://suiang.cn/aardio/code/functional