lambda-calculus相关内容

Python:嵌套lambdas--s_Push:解析器堆栈溢出内存错误`

我最近偶然发现this article,它描述了如何在Ruby中只使用pros来编写FizzBuzz,因为我很无聊,所以我想尝试使用lambdas在Python中实现同样的事情会很巧妙。 我读到了使用嵌套函数创建数字的部分,并编写了以下Python脚本: #!/usr/bin/env python zero = lambda p : (lambda x: x) one = la ..
发布时间:2022-04-12 16:23:47 Python

这可以用点自由风格表达吗?

给定以下表达式来对 IEnumerable 的数字求和: 让总和 l = l |>Seq.reduce(+)//版本a 是否有可能消除争论——就像这样? let sum = Seq.reduce(+)//版本b 我从 F# 编译器 (FS0030) 收到一个错误,我似乎记得我看到过一些关于“eta 转换"的内容,但不幸的是,我对 lambda calc 的了解太有限,无法了解 eta 转换 ..
发布时间:2022-01-05 10:03:44 其他开发

非递归 lambda 演算阶乘函数

如何使用 lambda 演算在不使用递归的情况下编写阶乘函数?意味着只是数学符号而不是任何特定编程语言的实现. 解决方案 如果“不使用递归"是指没有一般递归和因此,没有固定点(或自我应用),我们可以简单地观察到阶乘函数是原始递归的(即本质上是迭代的),并且通过迭代有一个非常通用和简单的原始递归编码(由教堂提供)数字)和对.我将讨论很有启发性的一般情况.让 是一些对的编码,让 ..
发布时间:2022-01-02 13:43:09 其他开发

循环变量上的闭包的正确语义是什么?

考虑下面的lua代码: f = {}对于 i = 1, 10 做f[i] = 函数()打印(我..“")结尾结尾对于 k = 1, 10 做f[k]()结尾 这将打印从 1 到 10 的数字.在这种情况下,i 对外部循环的每次迭代的值进行封闭.这就是我一直以来对闭包的理解,我很高兴... ...直到我将一些 lua 代码移植到 c# 中,并且我尝试做同样的事情: var f = new ..
发布时间:2021-12-30 20:43:11 C#/.NET

你不明白欣德利-米尔纳的哪一部分?

我发誓曾经有一件T恤出售,上面印有不朽的文字: 什么部分 你不明白吗? 就我而言,答案是……全部! 特别是,我经常在 Haskell 论文中看到这样的符号,但我不知道它是什么意思.我不知道它应该是什么数学分支. 我当然认识希腊字母表的字母和符号,例如“∉"(通常表示某物不是集合的元素). 另一方面,我以前从未见过“⊢"(维基百科声称这可能意味着“分区").我也不 ..

lambda 演算应用和抽象的优先级

应用程序的优先级高于抽象. 从这个意义上说,什么是 lambda 演算抽象?我对优先于什么感到困惑? 解决方案 Lambda 抽象是 λx.M,对于某些变量 x 和任意项 M. 应用是(MN),对于一些任意的术语M 和N. 优先级问题是如果可能有多个读取,则首先执行多个操作中的哪一个,因为该术语由于省略括号而含糊不清.例如在算术中,乘法优先于加法,这意味着 5+2×3 被读作 5 ..

对于定点组合器 Y,什么是 \x.f(xx)

对于 Y 组合子定理, 对于每个函数 F 都存在一个 X 使得 FX=X 这里的 F 是什么意思?F(x) = x +1 的不动点是什么?我的理解是 x+1=x 没有解决方案? 对于下面的证明: 对于任何函数 F,令 W 为函数 λx.F(xx) 并令 X = WW.我们声称 X 是 F 的不动点. 证明如下X = WWX = λx.F(xx) WX = F(WW)X = 外汇 λ ..

从 Curry-0, 1, 2 到 ...n

继上一个关于编写咖喱函数的问题之后,如何创建像球拍一样的咖喱函数,我已经开始为 0、1、2 编写固定大小写 - 它们与教堂数字非常相似,非常简洁.这是我目前所拥有的: (define (curry-0 func)功能)(定义你好(开始(显示“你好!")(换行)))(咖喱-0 你好);你好! (define (curry-1 func)(λ (x)(功能 x )))((咖喱-1 -) 2);-2 ..
发布时间:2021-07-02 18:48:55 其他开发

“避免捕获的替换"是什么意思?

在阅读 Wiki 中的 Lambda 演算时,遇到了术语避免捕获的替换.有人可以解释一下这是什么意思,因为我在任何地方都找不到定义. 谢谢 附注 我想知道的是告诉该操作避免捕获替换的原因.如果有人能做到,那将是一个很大的帮助 解决方案 通常,我们在 lambda 演算中选择的特定变量名称是没有意义的 - x 的函数与a 或 b 或 c 的函数.换句话说: (λx.( ..
发布时间:2021-06-21 20:22:03 其他开发

lambda 表达式的自由变量列表

我正在为即将到来的 OCaml 测试做一些功课,但遇到了一些麻烦. 考虑由以下抽象语法(其中 x 是变量)定义的 λ 项的语言: t ::= x |吨|λx.吨 写一个类型项来表示λ项.假设变量表示为字符串. 好的,男孩. # type t = Var of string |(t*t) 的应用程序 |字符串的绝对值*t;;类型 t = 字符串的变量 |(t * t) 的应用 |A ..
发布时间:2021-06-12 18:33:45 其他开发

Beta减少Lambda微积分

我有以下lambda演算: 1)λx.katze(x)(加菲猫) 2)λP.λxP(x)(茶) 3)λy.λx喜欢(x,y)(Mia) 如何通过Beta减少来减少它们? 我的解决方案: 1)katze(加菲猫) 2)茶 3)喜欢(Mia) 解决方案 执行beta缩减时,可以使用提供的值将绑定变量替换为lambda函数.表示法是 [param: ..
发布时间:2021-05-28 20:08:44 其他开发

Lambda微积分等效于Haskell中的map函数吗?

map函数返回一个列表,该列表是通过将函数(第一个参数)应用于作为第二个参数传递的列表中的所有项而构建的. 我试图弄清楚如果以Lambda Calculus表示法显示的话会是什么样子.有人可以举个例子吗? 解决方案 由于已将其标记为 haskell ,因此我将在Haskell中编写答案,但是像在lambda演算中那样构建所有功能.通常,这会为延续传递样式带来一个额外的类型参数 r . ..
发布时间:2021-05-13 20:44:08 其他开发

在Erlang中,将消息传递到pid列表的所有元素

我正在尝试构建一个非常简单的屏障同步服务器,该服务器最初会被喂以许多与之通信的进程.进程完成后,它将收到带有该进程的Pid的消息,并保留要执行此操作的每个进程的列表.当屏障达到零(所有进程都已发送消息)时,我的服务器需要向其中每个发送一条消息(我使用 [Pid | ProcList] 作为我的pids列表). 我尝试使用辅助函数无济于事,列表理解使我陷入无限循环,因此我正在研究如何使用lis ..

证明定理时循环

在用Debruijn指数形式化Lambda演算并在Coq中进行替换之后,我试图证明以下定理. 定理atom_equality:forall e:expression,forall x:nat,(beta_reduction(Var x)e)->(e = Var x). 这些是表达和减少beta的定义 归纳表达式:类型:=|Var(n:nat)|抽象(e:表达式)|应用程序(e1:表达式)( ..
发布时间:2021-04-24 20:07:58 其他开发

调用/应用lambda与函数调用-Ruby中的语法不同.为什么?

我是Ruby的新手,仍然尝试理解一些语言设计原则.如果我做对了,Ruby中的lambda表达式调用必须使用方括号,而"regular"函数调用必须使用"regular"/圆括号. 语法是否有特殊原因?或者换句话说,(为什么)调用者应该知道他们是调用函数还是应用lambda表达式? 解决方案 在Ruby中,方法不是lambda(例如,在JavaScript中). 方法始终属于对象 ..
发布时间:2021-02-15 20:59:29 其他开发

Lambda微积分减少

全部 下面是我很难减少的lambda表达式,即我无法理解该问题的解决方法. (λmλnλaλb.m(n a b)b)(λf x.x)(λf x.f x) 这是我尝试过的,但是我被卡住了: 将以上表达式视为:(λm.E)M等于 E =(λnλaλb.m(n a b)b) M =(λfx.x)(λf x.f x) =>(λnλaλb.(λf x.x)(λf x.f x ..
发布时间:2021-02-15 20:54:10 其他开发

在Javascript中使用Lambda演算(使用教堂数字)进行递归的问题

我一直在玩javascript(节点)中的lambda演算. 我创建了一些教堂数字,并且我一直在尝试创建一个递归函数来计算斐波那契数列,但绝对不能正常工作! 我尝试将函数包装在Y组合器和Z组合器中,但是都没有(或我的应用程序)正常工作. 我认为可能正在发生的事情是javascript仅应用了递归函数,然后每次执行此操作时,都会再次创建递归函数,等等. const TRUE ..
发布时间:2020-11-11 19:28:48 前端开发