相关疑难解决方法(0)

最奇怪的语言特征

在您看来,您遇到的最令人惊讶,奇怪,奇怪或真正的"WTF"语言功能是什么?

每个答案只能有一个功能.

language-agnostic programming-languages

975
推荐指数
176
解决办法
48万
查看次数

编写Haskell无限Fibonacci系列函数的C#版本

注意:这个问题的重点更多来自好奇心.我想知道是否有可能将Haskell实现音译成功能性的C#等价物.

所以我一直在学习Haskell非常好,在解决Project Euler问题的同时,我遇到了这个美丽的Haskell Fibonacci实现:

fibs :: [Integer]
fibs = 1:1:zipWith (+) fibs (tail fibs)
Run Code Online (Sandbox Code Playgroud)

当然我很想写这样的C#版本,所以:

  1. 如果我这样做:

    IEnumerable<int> fibs =
        Enumerable.Zip(Enumerable.Concat(new int[] { 1, 1 }, fibs),
                                                           //^^error
                                              fibs.Skip(1), (f, s) => f + s);
    
    Run Code Online (Sandbox Code Playgroud)

    错误表示使用未分配的局部变量fibs.

  2. 所以我稍微有点必要,而这个编译......

    public static IEnumerable<int> Get()
    {
        return Enumerable.Zip(Enumerable.Concat(new int[] { 1, 1 }, Get()),
                                              Get().Skip(1), (f, s) => f + s);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    它打破了堆栈溢出异常!所以我来到这里..

问题:

  1. 任何人都可以想到功能性的C#等价物吗?
  2. 我想了解为什么我的解决方案不起作用.

c# haskell functional-programming fibonacci

19
推荐指数
4
解决办法
3062
查看次数