|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre Expert
![]() ![]() |
Salut, c'est encore moi
Je n'aime pas beaucoup les blocs do, et m'efforce donc de les supprimer. Sur le coup, j'ai un peu de mal. Le code avec le do: Code :
Ma première idée a été d'utiliser l'opérateur >>=, puis j'ai essayé de chainer les fonctions avec des . (points) Rien n'y fait, Haskell ne me laissera pas mélanger des actions et des fonctions : Code :
Code :
isElfFile path = L.readFile path >>= (\contents -> return $ hasElfMagic contents) |
||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : mars 2007 Messages : 851 ![]() |
Ceci est plus concis, mais pas forcément plus lisible:
Code :
isElfFile path = L.readFile path >>= return . hasElfMagic Code :
|
||
|
|
00
|
|
|
#3 | |||||
|
Membre Expert
![]() ![]() |
Citation:
Je n'avais pas percuté que return était une fonction. En inversant l'opérateur >>=, on peut arriver à une notation presque point-free. Code :
![]() Code :
Merci en tout cas pour cette belle réponse Autre question en passant : L'opérateur >> existe pour ordonner deux actions. Existe-t-il l'opérateur inverse << ?*(celui là ne semble pas exister du moins...) |
|||||
|
|
00
|
|
|
#4 | ||||
|
Membre Expert
![]() Inscription : mars 2007 Messages : 851 ![]() |
Code :
[EDIT:] pour ton autre question, tu peux toujours écrire: Code :
|
||||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() |
|
|
|
00
|
|
|
#6 | ||
|
Nouveau Membre du Club
![]() Inscription : octobre 2002 Messages : 36 ![]() |
ce qui est de la forme
Code :
Donc là on a : Code :
is2 p = hasElfMagic `fmap` L.readFile p Code :
is3 = (hasElfMagic `fmap`) . L.readFile |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com