($) est un opérateur à la définition extrêmement simple :
Code:
1 2
| ($) :: (a -> b) -> a -> b
f $ x = f x |
Autrement dit c'est simplement l'application de fonction, comme un simple espace. Mais l'intérêt de ($) vient de sa priorité très faible, ce qui permet d'éviter d'utiliser beaucoup de parenthèses, par exemple ma fonction justGet ressemblerait à ça sans ($) :
Code:
1 2 3
| justGet :: String -> IO String
justGet s = liftM (fromMaybe (error ("The GET request for " ++ s ++ " failed.\n")))
(httpGet (fromMaybe (error (s ++ " is not a valid URI.\n")) (parseURI s))) |
Ce qui peut convenir aux adeptes du Lisp mais a tendance à irriter la plupart des gens... Je ne trouve pas ça très lisible non plus.
Tu peux lire le ($) comme un pipe à l'envers, plus ou moins.
--
Jedaï