函数美学3---Curry化
2019-05-19 10:40:36
收藏数:0
阅读数:796
评论数:0
- Curry 化
- 函数式编程
- 了解一下函数式思维
#!/usr/bin/env lua
function deco(key)
-- define decorator
-- for currizing
return function (f)
return function (t)
if t[key] then
return f(t)
else
function g(s)
t[key]=s
return f(t)
end
return g
end
end
end
end
function reverse(tab)
local ks = {}
local N = #tab
for i = 1, N do
ks[i]=table.remove(tab)
end
return ks
end
function decox(keys)
-- powerful decorator
local ks = reverse(keys)
return function (f)
for i, key in ipairs(ks) do
f=deco(key)(f)
end
return f
end
end
function f(t)
s= 'hello word'
for k, v in pairs(t) do
s = string.format('<%s class=%s>' ..s..' </%s>', k, v, k)
end
return s
end
-- f {lala='lala', hehe='hehe'}
f = decox {'cat', 'you'} (f)
s = f {body='body', head='head'} 'animal' 'people'
print(s)
评论区的留言会收到邮件通知哦~
推荐文章
- [实习] [开源软件] Casbin 开源软件 GSoC 远程预选+实习生 for Lua
- Openresty 压测总结
- Openresty 中的空值:nil,ngx.null,cjson.null
- macbook pro A1707 15 寸笔记本拆机指南
- Lua 的垃圾回收机制
- 介绍几个和 Lua 有关的工具
- 什么时候使用 access_by_lua,什么时候使用 content_by_lua
- Windows下 怎么编译安装 luadist lua版本是5.53
- srlua编译的exe如何反编译
- lua tcp socket queued connect timed out
- luarocks 牛刀小试
- EFK 日志服务-地理位置 geo_point 配置
- 解决 docker scratch 镜像的部署问题
- gitlab runner docker in docker 踩坑记
- MoonScript 代表月亮消灭你
- 将 Lua 代码编译为 JavaScript
- Lua游戏设计范例3
- 函数美学3---Curry化
- luaClass
- 求助!请教一个关于luaxml模块的使用问题