y-combinator相关内容

如何在没有“let rec"的情况下定义 y 组合器?

在几乎所有示例中,ML 类型语言中的 y 组合器都是这样编写的: let rec y f x = f (y f) xlet factorial = y (fun f -> function 0 -> 1 | n -> n * f(n - 1)) 这按预期工作,但是使用 let rec ... 定义 y 组合器感觉像是在作弊. 我想在不使用递归的情况下定义这个组合子,使用标准定义: Y ..
发布时间:2022-01-05 09:42:09 其他开发

我是否使用 C# dynamic 实现了 Y-combinator,如果没有,它是什么?

我的大脑似乎处于自虐模式,所以在被淹没在this, this 和 this,它想弄乱在 C# 中进行一些 DIY. 我想出了以下内容,我不认为是 Y 组合器,但它确实似乎设法使非递归函数递归, 不指代自身: Func, Func>Y = x =>x(x); 鉴于这些: Func>事实=自我=>n=>n == 0 ?1 : n * self(self)(n - 1);Func ..
发布时间:2022-01-02 13:48:32 C#/.NET

lambda 函数可以在 Python 中递归调用自身吗?

常规函数可以在其定义中包含对自身的调用,没问题.我不知道如何用 lambda 函数来做这件事,原因很简单,即 lambda 函数没有可引用的名称.有没有办法做到这一点?怎么样? 解决方案 我能想到的唯一方法就是为函数命名: fact = lambda x: 1 if x == 0 else x * fact(x-1) 或者,对于早期版本的 python: fact = lambda ..
发布时间:2021-12-16 08:14:42 Python

Haskell 中的 Y Combinator

是否可以编写Y Combinator 在 Haskell 中? 它似乎具有无限递归类型. Y :: f ->b->C其中 f :: (f -> b -> c) 什么的.即使是一个简单的微因式阶乘 factMaker _ 0 = 1factMaker fn n = n * ((fn fn) (n -1){- 被称为(factMaker factMaker) 5-} 因“发生检查:无法 ..
发布时间:2021-12-14 12:26:48 其他开发

函数定义中的自引用

在 Y-combinator 的解释中 (https://mvanier.livejournal.com/2897.html), (定义几乎阶乘(λ(f)(λ (n)(如果(= n 0)1(* n (f (- n 1))))))))(定义阶乘A(几乎阶乘阶乘A)) 它说在标准方案中,factorialA 的定义将进入无限循环,但是实现它会出现错误,说 factorial A 未定义. 我 ..
发布时间:2021-07-16 19:47:21 其他开发

使用Y组合器的列表函数没有递归,为什么?

注意:这是一种家庭作业,不是-最终目标是拥有一个函数,该函数生成作为数字列表提供给该函数的一组数字的幂集.我有该函数的递归版本,但是现在我需要找到一些方法,用等效的仅lambda表达式替换我拥有的解决方案中的每个显式递归函数(append,mapm等). 因此,我从较小的问题入手,希望将它们全部结合起来以编写完整的功能.我已经设法使用pure-lambda(Y组合器)提出了一个非递归阶乘函数 ..
发布时间:2021-02-15 21:07:36 其他开发

Y组合器实施方案

我真的是计划函数编程的新手.最近,我在lambda演算中遇到了Y-combinator函数,就像这样的Y ≡ (λy.(λx.y(xx))(λx.y(xx))).我想在方案中实现它,我进行了大量搜索,但没有找到与上述给定结构完全匹配的实现.我发现其中一些如下: (define Y (lambda (X) ((lambda (procedure) (X (lambda (arg) ..
发布时间:2020-07-28 18:42:44 其他开发

StandardML中的y组合器

我知道我可以像这样用SML编写y-combinator: 首先声明一个新的数据类型,以绕过由于圆度而导致的类型不匹配. datatype 'a mu = Roll of ('a mu -> 'a) val unroll = fn Roll x => x 现在您可以轻松定义y-combinator: val Y = fn f => (fn x => fn a => f (unroll ..
发布时间:2020-07-28 18:41:41 其他开发

YCombinator在Swift中不起作用

我正在尝试创建一个lambda函数,以获取阶乘函数,但这会引发分段错误和错误.我如何在Swift中使用它.请观看此视频,以获取我想做的事情的参考typealias f = () -> () typealias g = (Int) -> (Int) typealias F = Any -> g let y = { (gen: Any) -> g in (gen as F)(gen) } let fa ..
发布时间:2020-07-28 18:40:38 移动开发

如何定义不带"let rec"的y-combinator?

在几乎所有示例中,用ML类型语言编写的y组合器是这样的: let rec y f x = f (y f) x let factorial = y (fun f -> function 0 -> 1 | n -> n * f(n - 1)) 这可以按预期工作,但是感觉就像使用let rec ...定义y-combinator一样. 我想使用标准定义不使用递归来定义此组合器: Y ..
发布时间:2020-07-28 18:40:33 其他开发

定点组合器是否具有相互递归的功能?

是否存在用于创建相互递归函数元组的定点组合器? IE.我正在寻找类似Y-Combinator的东西,但是它需要多个“递归" *函数,并且将返回一个函数元组? *:当然不是真正的递归,因为它们被编写为以通常的Y-Combinator方式将自己(和兄弟姐妹)作为参数. 解决方案 您要寻找的生物是 Y * 组合器. 基于此页面由 oleg-at-okmij.org 我将 Y * 移植 ..