C# Haskell中映射函数的C等价物是什么

C# Haskell中映射函数的C等价物是什么,c#,C#,Haskell中的map函数有两个输入参数。第一个参数是函数,第二个参数是列表。map函数将作为输入参数传递的函数应用于列表中的所有元素,并返回一个新列表 是否有与此功能相当的C语言?选择 只有在你好奇的时候才能看到我的问题,因为它不是直接相关的。要回答你没有问过的问题,C中绑定序列单子的Haskell等价物称为SelectMany。有关详细信息,请参阅Wes Dyer关于这一点的伟大文章: 既然已经提到了Select和SelectMany,我将回答您没有问的另一个问题:fold被发现为 现在每

Haskell中的map函数有两个输入参数。第一个参数是函数,第二个参数是列表。map函数将作为输入参数传递的函数应用于列表中的所有元素,并返回一个新列表

是否有与此功能相当的C语言?

选择


只有在你好奇的时候才能看到我的问题,因为它不是直接相关的。

要回答你没有问过的问题,C中绑定序列单子的Haskell等价物称为SelectMany。有关详细信息,请参阅Wes Dyer关于这一点的伟大文章:

既然已经提到了Select和SelectMany,我将回答您没有问的另一个问题:fold被发现为

现在每个读到这篇文章的人都应该准备好成为那个用Y语言的习语写X语言的人。。。因此,为了您的C程序员同事,不要太激动。

另一种选择Select和SelectMany的方法是编写您自己的扩展方法

public static IEnumerable<U> Map<T, U>(this IEnumerable<T> s, Func<T, U> f)
{
  foreach (var item in s)
    yield return f(item);
}
感谢Wes Dyer提供的此甜蜜扩展方法!:
有关更多详细信息,请参阅。

如何?它看起来离地图最近。

你可能想看看F。它填补了C和Haskell之间的鸿沟。不是真的。它更像是针对.NET的OCaml。更不用说所有的ML家族语言,包括F和Haskell,可以说它们之间的共同点比任何C家族语言都多;任何能处理F的人都可能能处理Haskell或OCaml。@jrockway,@camcann:我不是说语言的语法。我的意思是,F并不强迫你总是使用纯函数式。可能相关:。谢谢……这有点违反直觉,我想Select会过滤集合中的行。我真的希望你看看我的问题。BM:过滤来自何处。现在camccann,即使你必须要钉钉子,把一把功能扳手扔进工具箱也没什么错。您可能需要拧紧一些螺栓。@camccan Functional C非常好。仅仅因为该语言不是严格意义上的函数式语言并不意味着大多数.net程序员不会从功能性更强的构建中获益匪浅。使用C提供的函数式编程功能是一个好主意。另一方面,强迫C使用它不支持的功能性习惯用法,比如说,在Haskell中非常流行的咖喱式部分应用程序,可能会让你头疼,混淆你的代码,并让其他必须使用它的人感到恼火。更新链接-