Haskell中的map函数有两个输入参数。第一个参数是一个函数,第二个参数是一个列表。map函数将作为输入参数传递的函数应用于列表中的所有元素,并返回一个新列表。
是否有C#等效于此功能?
Haskell中的map函数有两个输入参数。第一个参数是一个函数,第二个参数是一个列表。map函数将作为输入参数传递的函数应用于列表中的所有元素,并返回一个新列表。
是否有C#等效于此功能?
Answers:
另一个备选方案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提供的这种出色的扩展方法!:)有关更多详细信息,请参见发布。
由于Select与SelectMany已经提到的,我会回答一个额外的问题,你没有问:fold发现为骨料。
现在,每个阅读此书的人都应该具备充分的条件,可以成为使用Language Y习语编写Language X的那个家伙,所以为了您的C#程序员同伴,不要太过分。
为了回答您没有提出的问题,在C#中将Haskell等同于绑定“序列”单子的对象称为SelectMany。有关详细信息,请参见Wes Dyer的精彩文章:
http://blogs.msdn.com/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx
怎么样ConvertAll?看起来像最接近地图。