84 votes

Quel est l'équivalent en C# de la fonction map en Haskell ?

La fonction map en Haskell a deux paramètres d'entrée. Le premier paramètre est une fonction et le second paramètre est une liste. La fonction map applique la fonction passée en paramètre d'entrée à tous les éléments de la liste et renvoie une nouvelle liste.

Existe-t-il un équivalent en C# de cette fonctionnalité ?

101voto

ChaosPandion Points 37025

Select

Référence MSDN

Voir ma question aquí (Seulement si vous êtes curieux car ce n'est pas directement lié).

21voto

Anne Lagang Points 1203

Une autre alternative à Select y SelectMany est d'écrire votre propre méthode d'extension.

public static IEnumerable<U> Map<T, U>(this IEnumerable<T> s, Func<T, U> f)
{
  foreach (var item in s)
    yield return f(item);
}

Merci à Wes Dyer pour cette douce méthode d'extension ! :) Voir poste pour plus de détails.

15voto

C. A. McCann Points 56834

Desde Select y SelectMany ont déjà été mentionnées, je vais répondre à une question supplémentaire que vous n'avez pas posée : fold est trouvé comme Agrégat .

Maintenant, tous ceux qui lisent ces lignes devraient être parfaitement équipés pour devenir ce type qui écrit dans la langue X en utilisant les idiomes de la langue Y... alors, pour le bien de vos collègues programmeurs C#, n'allez pas vous tromper... trop emportés.

11voto

Eric Lippert Points 300275

Et pour répondre à une question que vous n'avez pas posée, l'équivalent en Haskell de la liaison de la monade "séquence" s'appelle SelectMany en C#. Voir l'excellent article de Wes Dyer à ce sujet pour plus de détails :

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

3voto

Adway Lele Points 145

Et si ConvertAll ? On dirait que c'est le plus proche de la carte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X