17得票3回答
互递归函数的不动点组合子?

是否存在一种固定点组合子,可以创建相互递归函数的元组?也就是说,我正在寻找类似于Y组合子的东西,但它可以接受多个“递归”函数,并返回函数的元组。 *:当然不是真正的递归,因为它们是按照通常的Y组合子方式编写的,以自己(和兄弟姐妹)作为参数。

16得票2回答
为什么归纳数据类型禁止像 `data Bad a = C (Bad a -> a)` 这样的类型,其中类型递归出现在 -> 的前面?

Agda手册中关于归纳数据类型和模式匹配的部分指出: 为了确保规范性,归纳出现必须在严格正位置。例如,下面的数据类型是不允许的:data Bad : Set where bad : (Bad → Bad) → Bad 由于构造函数的参数中存在Bad的负面出现,因此这个要求对归纳数据...

14得票1回答
我是否已经使用C#动态实现了Y组合子?如果没有,什么是它?

我似乎沉迷于自虐模式,所以在阅读完这篇文章、这篇文章和这篇文章后,它想要用C#尝试一些自己动手的东西。 我想出了以下代码,我不认为这是Y组合器,但它确实似乎能够将一个非递归函数变成递归函数,而且不引用自身:Func<Func<dynamic, dynamic>, Func&...

11得票3回答
C++中的固定点组合子

我对使用固定点组合器(例如C++中的y-combinator)的实际示例感兴趣。您是否曾经在实际代码中使用过固定点组合器,例如egg或bind? 我发现在egg中的这个示例有些难以理解: void egg_example() { using bll::_1; using b...

10得票2回答
转换计算固定点的函数

我有一个函数,它按迭代计算一个不变点:equivalenceClosure :: (Ord a) => Relation a -> Relation a equivalenceClosure = fst . List.head -- "guarante...

10得票4回答
Y组合子如何通过编程计算不动点?

我相信我在数学上理解了Y组合子的概念:它返回给定函数F的不动点,因此f = Y(F),其中f满足f == F(f)。 但是我不明白它如何以程序方式进行实际计算? 让我们以这里给出的JavaScript示例为例:var Y = (F) => ( x => F( y => x...

9得票3回答
替代的Y组合子定义

我最近花了一些时间来理解Y组合子,我发现它通常被定义为以下内容(这是使用C#编写的,但所选语言并不重要): public delegate TResult SelfApplicable<TResult>(SelfApplicable<TResult> r); pub...

9得票4回答
在Scala中解释Y组合子的实现?

这是Scala中Y组合子的实现方式: scala> def Y[T](func: (T => T) => (T => T)): (T => T) = func(Y(func))(_:T) Y: [T](func: (T => T) => (T =&g...

9得票2回答
在λ演算中定义堆栈数据结构及其主要操作

我正在尝试使用固定点组合器在lambda演算中定义一个数据结构stack,并定义两个操作:元素的插入和移除,即push和pop,但我只能成功定义插入,而移除我无法理解如何定义。 以下是我的push操作和stack定义方法: Stack definition: STACK = \y.\x.(...

8得票4回答
Y组合子在D语言中的应用?

我尝试更好地学习Y组合器(在Scheme中我有些理解),并在D 2.0中实现它,但失败得相当惨: auto fact = delegate(uint delegate(uint) recurse) { return delegate(uint n) { ret...