[Functional Programming] Church Encodings: Numberals
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | const log = console.log; // zero :: &fa.a const zero = f => x => x; // zero is F // once :: &fa.fa const once = f => x => f(x); // once it I // twice :: &fa.f(fa) const twice = f => x => f(f(x)); // thrice :: &fa.f(f(fa)) const thrice = f => x => f(f(f(x))); const T = true ; const F = false ; const I = x => x; const not = x => !x; log(zero(not)(T)) // true, because only return second arguement log(once(not)(T)) // false log(twice(not)(F)) // false log(thrice(not)(T)) // false log( '****' ) /** SUCCSOR SUCC N1 = N2 SUCC N2 = N3 SUCC(SUCC N1) = N3 SUCC &fa.fa = &fa.f(fa) SUCC N2, then n is 2, do f n times, then add one f more */ const succ = n => f => x => f(n(f)(x)); // conver chunch number to JS number. // jsnum :: take a chunch number, call (x => x + 1) n times, and start from 0. const jsnum = n => n(x => x + 1)(0); log(succ(zero)(not)(T)) // false log(jsnum(succ(zero))) // 1 log(jsnum(succ(succ(zero)))) // 2 const n0 = zero; const n1 = once; const n2 = twice; const n3 = thrice; const n4 = succ(thrice); log(jsnum(succ(n2))) // 3 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2017-05-10 [Angular] Test Directive
2016-05-10 [Angular 2] @ngrx/devtools demo