lamda运算学习笔记

lamda运算学习笔记lamda->Llamda演算至少从表面上看,有着这样一种企图:将所有运算操作,以及自然数都抽象成“函数”(再一次见识到函数这个概念的伟大)。下面简单的介绍下lamda演算。lamda演算的原始定义看起来比较无聊:(Lx.[fx])a=fa上式用熟悉的概念翻译,就是自变量为x的函数f(x),代入x=a,得f(a)但是这里有

大家好,又见面了,我是你们的朋友全栈君。

lamda -> L

lamda演算至少从表面上看,有着这样一种企图:
将所有运算操作,以及自然数都抽象成“函数”(再一次见识到函数这个概念的伟大)。下面简单的介绍下lamda演算

lamda演算的原始定义看起来比较无聊:

(Lx. [fx]) a = fa

上式用熟悉的概念翻译,就是自变量为x的函数f(x),代入x=a,得f(a)

但是这里有一个扩展:不仅f本身是函数,而且x和a也是函数!而且f也可以作为自变量,即

(Lf. [fx]) g = gx

至此,可以看出,“L”后面至“.”前面的符号其实就是自变量

接下来我们可以看看如何用这种定义表示自然数:

考虑复合函数的表示:

(Lf. [f(fx)]) g = g(gx)

如果做的更彻底一些,把x也当做自变量(没错,这就是二元函数的表示):

Lf. [Lx. [f(fx)]]

将上式缩写为

Lfx. [f(fx)]

并且将“2”的“函数”表达形式,定义为:

2 = Lfx. [f(fx)] (此时,”2″是一个函数而不仅仅是一个数字)

于是,我们有这么一个结论:2重复合函数表示“2”

类似地,我们得到其他自然数的定义:

3 = Lfx. [f(f(fx))]

4 = Lfx. [f(f(f(fx)))]

1 = Lfx. [fx]

0 = Lfx. [x]

… …

接下来,lamda演算的神奇之处在此展开:

考虑函数S = Labc. [b((ab)c)] 的用处,将3代入函数:

S 3 

= Labc. [b((ab)c)] 3

= Lbc. [b((3 b)c)] (实际上即代入a = 3)

= Lbc. [b(b(b(bc)))]

= 4

可见,S的作用就是“+1”操作

上述函数S的神奇之处在于,运用完全抽象的函数运算,取代具体的算术运算。

【写于2012年11月】


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138797.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL EXPLAIN执行计划详解

    MySQL EXPLAIN执行计划详解详细介绍了MySQLEXPLAIN执行计划的各个字段的含义以及使用方式。

    2022年10月17日
    5
  • element ui select 踩坑

    element ui select 踩坑

    2021年6月9日
    173
  • linux c语言xml解析xml,纯C语言XML解析器

    linux c语言xml解析xml,纯C语言XML解析器精短高效的XML解析器,纯C单一程序,应用于银行的国税库行横向联网接口系统中,稳定可靠,运行速度飞快,非相应的JAVA程序可比.以下为大部分源码:/*Copyright(c)2005wzs*/#include#include#include#include#include#include”xmlparse.h”/*xml得到节点名值,返回:1节点标识名开头,2节点标…

    2022年7月27日
    6
  • LM算法推导「建议收藏」

    LM算法推导「建议收藏」提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档前言LM在非线性优化中有着广泛的应用,CSDN中有很多写好的代码但是相关的公式推导却很少,所以我就把公式推导整理了一下。一、公式推导…

    2022年10月1日
    4
  • httprunner(4)录制生成测试用例[通俗易懂]

    httprunner(4)录制生成测试用例[通俗易懂]前言写用例之前,我们应该熟悉API的详细信息。建议使用抓包工具Charles或AnyProxy进行抓包。har2case我们先来了解一下另一个项目har2case他的工作原理就是将当前主流的抓

    2022年7月31日
    12
  • leetcode-14最长公共前缀(分治|二分)[通俗易懂]

    leetcode-14最长公共前缀(分治|二分)[通俗易懂]原题链接编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,”flow”,”flight”]输出:”fl”示例 2:输入:strs = [“dog”,”racecar”,”car”]输出:””解释:输入不存在公共前缀。 提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成题解分

    2022年8月9日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号