javascript 闭包应用, 阿隆佐·邱奇想法——计算机实现运算,而不需要0、1、2、3这些数字和+、-、*、/这些符号。
2018-01-09 20:35
337 查看
javascript 闭包
阿隆佐·邱奇(Alonzo Church,1903年6月14日-1995年8月11日)是美国数学家,1936年发表可计算函数的第一份精确定义,对算法理论的系统发展做出巨大贡献。邱奇在普林斯顿大学受教并工作四十年,曾任数学与哲学教授。1967年迁往加利福尼亚大学洛杉矶分校。 ——百度百科参考廖雪峰博客的闭包模块
/* * // 闭包 */ // 定义数字0: var zero = function (f) { return function (x) { return x; } }; // 定义数字1: var one = function (f) { return function (x) { return f(x); } }; // 定义加法: function add(n, m) { return function (f) { //add f return function (x) { // f console return m(f)(n(f)(x)); } } } //定义乘法 function multi(n, m){ } // 0 (zero(function () { console.log('print 0 times'); }))(); // 1 (one(function () { console.log('print 1 times'); }))(); // 计算数字2 = 1 + 1: var two = add(one, one); // 计算数字3 = 1 + 2: var three = add(one, two); // 计算数字5 = 2 + 3: var five = add(two, three); //如何证明上述加法成立 给2传一个函数,会打印2次: (two(function () { console.log('print 2 times'); }))(); // 给3传一个函数,会打印3次: (three(function () { console.log('print 3 times'); }))(); // 给5传一个函数,会打印5次: (five(function () { console.log('print 5 times'); }))();
然而关于减法,乘法和除法的推算我没能扩展不来。
相关文章推荐
- loner_li 机试题 编写一个简单的计算器实现加减乘除:输入两个数字和一个运算符号,输出结果(注意容错性)
- javascript 按位或(|),无符号右移(>>>)运算,组合技巧来实现————密码强度提示,四种情况??
- 脑弄大开之——如何抛弃数字和运算符号只用计算机和函数进行运算
- 栈的应用一:JavaScript实现数字进制间的相互转换
- 从JavaScript的移位运算看数字在计算机内部的编码——补码
- 实现计算器4则运算算法-分离算法 - 实践 (上) 符号和数字分离
- 使用Javascript实现一种简单的数字混淆功能(高手绕过)
- 这些区块链开发生态应用,你知道几个数字货币
- Java制作计算机并实现基本运算
- javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo
- JavaScript高级之-------闭包的概念及其应用
- JavaScript 函数闭包实现多个事件的监听
- JavaScript File API应用——如何设计和实现Ajax文件上传组件
- 数字证书在WEB应用中实现登陆
- JavaScript 闭包原理和闭包实现
- Javascript 正则表达式实现为数字添加千位分隔符
- javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo
- 『JavaScript』限制Input只能输入数字实现思路及代码
- 堆栈的应用--计算机对运算表达式编译
- Javascript应用--实现菜单列表展开闭合效果