gpt4 book ai didi

c# - C# 泛型中的定点生成器

转载 作者:行者123 更新时间:2023-11-30 19:46:16 25 4
gpt4 key购买 nike

我曾尝试用 C# 定义一个您在许多函数式语言中看到的定点生成器。我相信 foldr 有时通常是根据定点生成器定义的。我将展示它的 Haskell 定义,然后展示我在 C# 中的定义。非常感谢任何帮助。

//Haskell
fix f = f (fix f)

//C# (Many attempts)
public static Func<Func<T, T>, T> Combinator1<T>(this Func<T, T> f)
{
return x => f(Combinator1(f)(x));
}
public static Func<Func<T, T>, T> Combinator2<T>(this Func<T, T> f)
{
return x => x(Combinator2(x)(f));
}
public static Func<T, U> Combinator3<T, U>(Func<Func<T, U>, Func<T, U>> f)
{
return f(x => Combinator3(f)(x));
}

最佳答案

我对 haskell 或 this operator 了解不多。但我已经阅读了 Mads Torgersen 的一篇文章,内容是关于使用 C# lambda 表达式实现 Y/Fix 组合器。它可能对你有用,这里是link .

这是他实现的 final方法:

public Func<T, T> Fix<T>(Func<Func<T,T>, Func<T,T>> F) {
return t => F(Fix(F))(t);
}

关于c# - C# 泛型中的定点生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com