[Haskell-fr] lagrange

Dan Weston westondan at imageworks.com
Tue Sep 25 20:54:51 EDT 2007


 > addition a $ addition b c

Aussi on voit parfois

   addition a $ addition b $ c

Ce dernier dépend de ce que le ($) s'associe vers la droite, fixé dans 
le Prélude par le r à la fin de infixr, parsé comme:

  addition a $ (addition b $ c)

Le plus souvent, je vois

   addition a . addition b $ c

Ce dépend de ce que le ($) a une précédence inférieure à celle de (.), 
fixée à 9 dans le Prélude par "infixr 9 .", parsé comme:

  (addition a . addition) b $ c

Enfin, il faut trouver un style qui te conviennes et y tenir. Moi, je 
préfère ce dernier.

Dan

Olivier Thauvin wrote:
> 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 ;)
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Haskell-fr mailing list
> Haskell-fr at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-fr




More information about the Haskell-fr mailing list