Что такое эквивалент С# функции карты в Haskell

Функция отображения в Haskell имеет два входных параметра. Первый параметр - это функция, а второй параметр - список. Функция map применяет функцию, переданную как входной параметр ко всем элементам в списке, и возвращает новый список.

Существует ли эквивалент С# для этой функции?

Ответ 1

Select

Ссылка MSDN

Смотрите мой вопрос здесь (Только если вам интересно, поскольку это не связано напрямую).

Ответ 2

Другой альтернативой 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 за этот сладкий метод расширения!:) Подробнее см. .

Ответ 3

Поскольку уже были упомянуты Select и SelectMany, я отвечу на дополнительный вопрос, который вы не задали: fold находится как Aggregate.

Теперь все, кто читает это, должны быть полностью экипированы, чтобы стать тем Гаем, который пишет язык X, используя языковые идиомы Y... так что ради ваших товарищеских программистов на С# не увлекайтесь.

Ответ 4

И чтобы ответить на вопрос, который вы не спросили, эквивалент Haskell привязки "последовательности" монады называется SelectMany в С#. См. Статью Wes Dyer об этой статье:

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

Ответ 5

Как насчет ConvertAll? Он выглядит как Ближайший к карте.