Après avoir joué avec haskell un peu je suis tombé sur cette fonction:Le système de type de Haskell traite une valeur numérique comme fonction?
Prelude Data.Maclaurin> :t ((+) . ($) . (+))
((+) . ($) . (+)) :: (Num a) => a -> (a -> a) -> a -> a
(Data.Maclaurin est exporté par le paquet espace vectoriel.) Il faut donc un Num, une fonction, une autre Num et, finalement, les retours un Num. Quelle magie fait le travail suivant?
Prelude Data.Maclaurin> ((+) . ($) . (+)) 1 2 3
6
2 n'est évidemment pas une fonction (a-> a) ou est-ce que j'ai manqué quelque chose?
http://www.haskell.org/haskellwiki/Num_instance_for_functions – sdcvvc