y-combinator相关内容
在几乎所有示例中,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
..
我的大脑似乎处于自虐模式,所以在被淹没在this, this 和 this,它想弄乱在 C# 中进行一些 DIY. 我想出了以下内容,我不认为是 Y 组合器,但它确实似乎设法使非递归函数递归, 不指代自身: Func, Func>Y = x =>x(x); 鉴于这些: Func>事实=自我=>n=>n == 0 ?1 : n * self(self)(n - 1);Func
..
在构建一个基于 lambda 的小型元编程库时,我有必要在 C++14 通用 lambda 中使用递归来实现一个 左折叠. 我自己的解决方案是将 lambda 本身作为其参数之一传递,如下所示: template constexpr auto fold_l_impl(TAcc acc, TF f, Ts ... xs){//折叠步骤.自动步骤([=](自动自我){返回 [=](自动 y_a
..
常规函数可以在其定义中包含对自身的调用,没问题.我不知道如何用 lambda 函数来做这件事,原因很简单,即 lambda 函数没有可引用的名称.有没有办法做到这一点?怎么样? 解决方案 我能想到的唯一方法就是为函数命名: fact = lambda x: 1 if x == 0 else x * fact(x-1) 或者,对于早期版本的 python: fact = lambda
..
是否可以编写Y Combinator 在 Haskell 中? 它似乎具有无限递归类型. Y :: f ->b->C其中 f :: (f -> b -> c) 什么的.即使是一个简单的微因式阶乘 factMaker _ 0 = 1factMaker fn n = n * ((fn fn) (n -1){- 被称为(factMaker factMaker) 5-} 因“发生检查:无法
..
在 Y-combinator 的解释中 (https://mvanier.livejournal.com/2897.html), (定义几乎阶乘(λ(f)(λ (n)(如果(= n 0)1(* n (f (- n 1))))))))(定义阶乘A(几乎阶乘阶乘A)) 它说在标准方案中,factorialA 的定义将进入无限循环,但是实现它会出现错误,说 factorial A 未定义. 我
..
注意:这是一种家庭作业,不是-最终目标是拥有一个函数,该函数生成作为数字列表提供给该函数的一组数字的幂集.我有该函数的递归版本,但是现在我需要找到一些方法,用等效的仅lambda表达式替换我拥有的解决方案中的每个显式递归函数(append,mapm等). 因此,我从较小的问题入手,希望将它们全部结合起来以编写完整的功能.我已经设法使用pure-lambda(Y组合器)提出了一个非递归阶乘函数
..
我真的是计划函数编程的新手.最近,我在lambda演算中遇到了Y-combinator函数,就像这样的Y ≡ (λy.(λx.y(xx))(λx.y(xx))).我想在方案中实现它,我进行了大量搜索,但没有找到与上述给定结构完全匹配的实现.我发现其中一些如下: (define Y (lambda (X) ((lambda (procedure) (X (lambda (arg)
..
我知道我可以像这样用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
..
我正在尝试创建一个lambda函数,以获取阶乘函数,但这会引发分段错误和错误.我如何在Swift中使用它.请观看此视频,以获取我想做的事情的参考typealias f = () -> () typealias g = (Int) -> (Int) typealias F = Any -> g let y = { (gen: Any) -> g in (gen as F)(gen) } let fa
..
这是Scala中Y组合器的实现: scala> def Y[T](func: (T => T) => (T => T)): (T => T) = func(Y(func))(_:T) Y: [T](func: (T => T) => (T => T))T => T scala> def fact = Y { | f: (Int => Int) =>
..
在几乎所有示例中,用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
..
在第9章的《小策划者》书中,而为任意长输入构建length函数,建议执行以下操作(在第168页本身): ((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) ((lambda (length) (
..
在小计划者一书中,我们发现此功能仅支持长度小于或等于 1 的列表: (((lambda (mk-length) ; A. (mk-length mk-length)) (lambda (mk-length) (lambda (l) (cond ((n
..
我花了一天的时间阅读《小策划者》一书中第166页的length≤1;有以下代码: (((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) (lambda (l) (cond ((null? l) 0) (else (add1 ((mk-lengt
..
因此,我花了很多时间阅读和重新阅读 Little Schemer 中第9章的结尾,其中为length函数开发了适用的Y组合器.我认为我的困惑归结为一个单一的陈述,该陈述对比了两种长度的形式(在排除组合器之前): A: ((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) (lambda (
..
是否存在用于创建相互递归函数元组的定点组合器? IE.我正在寻找类似Y-Combinator的东西,但是它需要多个“递归" *函数,并且将返回一个函数元组? *:当然不是真正的递归,因为它们被编写为以通常的Y-Combinator方式将自己(和兄弟姐妹)作为参数. 解决方案 您要寻找的生物是 Y * 组合器. 基于此页面由 oleg-at-okmij.org 我将 Y * 移植
..
这是Haskell中定点组合器的通常定义: fix :: (a -> a) -> a fix f = let x = f x in x 在 https://wiki.haskell.org/Prime_numbers 上,它们定义了不同的定点组合器: _Y :: (t -> t) -> t _Y g = g (_Y g) -- multistage
..
我正在尝试学习lambda演算和Scheme Lisp.可在此处找到有关Lambda微积分的教程 http://www .inf.fu-berlin.de/lehre/WS03/alpi/lambda.pdf . 我面临的问题是我不知道如何正确实现迭代. (define (Y y) (((lambda (x) (y (x x))) (lambda (x) (y (x x)))))) (
..
我目前正在通过迈克·范尼尔. 沿Y组合器推导的方式,此代码: (define (part-factorial self) (lambda (n) (if (= n 0) 1 (* n ((self self) (- n 1)))))) ((part-factorial part-factorial) 5) ==> 120 (define factor
..