是否有可能构建一个相对较快的无类型 lambda 演算机?
纯无类型 lambda 演算是一个强大的概念。然而,构建一台供现实世界使用的机器或解释器通常被描述为(接近)不可能。我想对此进行调查。理论上是否可以…
lambda 演算中的迭代函数
我有一个这样的函数, iter :: Int -> (a -> a) -> a -> a iter n f a = f (f ... (f a) .. ) 如何在非类型化 lambda 演算中定义这样的函数?…
一阶参数多态性和一阶函数
我正在阅读论文 Generics of a Higher Kind,第一句话是 使用 Java 5 和 C# 2.0,一阶 引入参数多态性 在主流的面向对象中 名称下的编程语言 泛型。 …
将函数的第一个参数旋转为第 n 个
给定一个至少具有 n 个参数的函数,我想旋转第一个参数,使其成为第 n 个参数。例如(在无类型 lambda 演算中): r(λa. a) = λa. a r(λa. λb. a …
Lambda 演算运算符优先级
我在理解 lambda 演算运算符优先级时遇到问题。 例如以下代码: lambda x.x z lambda y.x y 将是: lambda x. (x (z lambda y. x y)) 或 lambda x. ((…
SKI 变换,如何用函数式语言编程
我面临以下 Prolog 代码。表达式 [X]>>Y 代表 对于 lambda 表达式 lambda XY 代码消除了 lambda 并给出 S、K 和 I 的组合表达式: convert([X]>…
lambda 演算问题 - 具体
我有以下问题, (f.x.f(f x))(y.y+1) = x.(y.y+1)((y.y+1) x) = x.(y.y+1)(x+1) = x.x+1+1 我不明白为什么最后一次转换可以? 不应该是x.(y.y+1)(x+1)…
如何解析 lambda 项
我想解析 lambda 演算。我不知道如何解析该术语并尊重括号优先级。例如: (lx ly (x(xy)))(lx ly xxxy) 我找不到好的方法来做到这一点。我只是看不到…
Lambda 演算帮助
所以我完全陷入了问题的这一部分。如果有人能帮忙那就太好了............ 显示项 ZZ,其中 Z 是 λz.λx。 x(zzx) 满足 定点组合器的要求为 ZZM =β M…
如何在 F# 中实现定点运算符(Y 组合器)?
我正在使用 F# 创建 lambda 演算。我目前正试图弄清楚如何实现定点运算符(也称为 Y 组合器)。 我认为其他一切都井然有序。表达式由以下可区分联合表…
如何在 F# 中实现 beta 缩减函数?
我正在用 F# 编写 lambda 演算,但我一直坚持实现 beta 约简(用实际参数替换形式参数)。 (lambda x.e)f --> e[f/x] 使用示例: (lambda n. n*2+3)…