什么是Haskell中C#等效的map函数

时间:2010-01-26 21:54:18

标签: c#

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

C#是否等同于此功能?

5 个答案:

答案 0 :(得分:84)

Select

MSDN Reference

请参阅我的问题here(仅当您感到好奇,因为它不直接相关)。

答案 1 :(得分:20)

SelectSelectMany的另一种替代方法是编写自己的扩展方法。

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提供这种甜蜜的扩展方法! :) 有关详细信息,请参阅post

答案 2 :(得分:14)

由于已经提及SelectSelectMany,我会回答您未提出的其他问题:fold被发现为Aggregate

现在每个读这篇文章的人都应该完全具备能够使用语言Y成语写出语言X的那个人...所以为了你的C#程序员,不要进行程。

答案 3 :(得分:11)

要回答一个你没有问的问题,Haskell相当于绑定“序列”monad在C#中称为SelectMany。有关详细信息,请参阅Wes Dyer关于此的精彩文章:

http://blogs.msdn.com/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx

答案 4 :(得分:3)

ConvertAll怎么样?它看起来像最贴近地图。