Haskell 中的教堂数字
我正在尝试使用以下定义在 haskell 中打印教堂数字: 0 := λfx.x 1 := λfx.f x Haskell 代码: c0 = \f x -> x c1 = \f x -> f x 当我在 haskell 控…
调用/应用 lambda 与函数调用 - Ruby 中的语法是不同的。为什么?
我对 Ruby 还算陌生,并且仍在尝试了解一些语言设计原则。如果我没猜错的话,那么 Ruby 中的 lambda 表达式调用必须使用方括号,而“常规”函数调用则…
lambda 演算中的按值调用
我正在研究类型和编程语言,以及 Pierce,用于按值缩减策略调用,给出术语id(id(λz.id z))的示例。内部 redex id (λz.id z) 被简化为 λz.id z。首…
是否有可能构建一个相对较快的无类型 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]>>Y,'I'…
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) 我找不到好的方法来做到这一点。我只是看不到…