Dans un langage normal, disons, "sympa", on aurait ça : let sommelong = map length. C'est lisible (sous réserve d'un peu d'habitude peut-être), c'est efficace. Après, on rigole bien, on a une fonction de type [[a]] -> [Int], on peut écrire sommelong [[1, 2, 3], [3,4]] aussi bien que sommelong ["Foo", "BarBarBar"], ce qui est totalement inutile (ça prouve bien que mon exemple est à chier), mais c'est bien et tout. Pour les étrangers incultes et barbares, c'est une application partielle : map est de type (a -> b) -> [a] -> [b], c'est à dire que son premier argument est une fonction prenant un type a quelconque (enfin, je crois) et renvoyant un type b tout aussi quelconque (même pas forcément le même). Or si on écrit map length (comme on l'a fait juste au début, ça n'est pas un hasard), on crée une nouvelle valeur fonctionnelle qui correspond à un map dont le premier argument est length - cependant cette valeur fonctionnelle est directement utilisable comme fonction. On peut donc lui nommer un nom (comme on a fait) et l'appliquer après à des listes (comme on a fait aussi), genre sommelong uneliste. C'est comme si l'on avait fait map length uneliste.

Dans un langage moins sympa (zB. Python) mais qui essaye de se faire des potes poulpes (Ouaaaaais !), on est bien emmerdé, parce que :

  1. On a bien une fonction map, qui prend en argument une fonction et une liste (en fait, "pas seulement", mais compliquons pas, tfaçon ça marche).
  2. On a bien une fonction len, qui sert à calculer la longueur d'une séquence^W liste.
  3. Mais on sait pas comment combiner les deux.

On pourrait faire une fonction chiante qui se tape ce rôle, mais ça sert à rien que je le fasse puisque la doc officielle donne de toute façon le code correspondant. Moi, je voulais juste vous dire que ça existe, sous le nom de functools.partial dans Python 2.5 :

>>> import functools
>>> sommelong = functools.partial(map, len)
>>> sommelong([[1,2,3], "foo"])
[3, 3]

L'exemple est toujours foireux, mais vous êtes cultivé (ou hilare, ce qui est bien aussi).

Voici donc la page officielle de functools.

C'est puissant.