
Le mardi 25 septembre 2007, Dan Weston a écrit :
L'opérateur ($) n'est que l'application (d'une fonction) à basse précédence, dont la définition est assez simple:
infixr 0 $ f $ x = f x
C'est la première ligne qui coûte. La précédence de l'application est 10 (la plus haute), tandis que la précédence de ($) est 0 (la plus basse).
E.g., f . g . h . k $ x = f (g (h (k x)))
($) sert à obvier aux parenthèses et à un style point-free qui est (pour moi au moins) plus compréhensible et élégant, mais tous les deux sont traduits identiquement.
Si je peux me permettre, je vais donner un exemple extrémement simple: addition a b = a + b addition a addition c d Sur cette deuxième ligne, haskell va râler du style "addition prends 2 arguments, pas 4". Le '$' permet d'écrire: addition a $ addition b c on a alors "a" et "addition b c", ce qui ne fait plus que deux argument au premier "addition". Le '.' j'ai encore du mal ;)