Bonjour,
je souhaite lire le contenu d'une url, par exemple "http://fr.wikipedia.org/wiki/Haskell" à l'aide d'une fonction Haskell.
Cette fonction devrait être de la forme :
String->IO (String)
D'avance merci.
Bonjour,
je souhaite lire le contenu d'une url, par exemple "http://fr.wikipedia.org/wiki/Haskell" à l'aide d'une fonction Haskell.
Cette fonction devrait être de la forme :
String->IO (String)
D'avance merci.
Le plus simple si c'est vraiment tout ce que tu veux faire est d'utiliser Network.HTTP.Simple.httpGet. Pour quelque chose d'un peu plus complexe, Network.HTTP serait sans doute préférable.
Et si tu veux vraiment une fonction exactement du type que tu demandes, tu peux faire :
--
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 import Network.URI import Network.HTTP.Simple import Data.Maybe import Control.Monad 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
Jedaï
Merci pour la rapidité et la précision de la réponse.
Donc pour lire, après avoir importer les modules Network.HTTP.Simple, Network.URI et Data.Maybe, je tape
lorsque j'ai tapé ce code, je n'avais pas vu l'exemple bien plus complet donné dans le message précédent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part httpGet $ fromJust (parseURI "http://fr.wikipedia.org.wiki/Haskell")
Non, non, c'est très bien, la fonction que j'ai donnée était un compromis pour avoir des erreurs significatives en gardant le type que tu avais demandé, mais dans le cas où l'URI est une constante, ça n'aurait pas de sens d'utiliser fromMaybe plutôt que fromJust pour parseURI, et retourner une IO (Maybe String) est préférable du point de vue gestion d'erreur.
(fromMaybe (error ...) est préférable à fromJust lorsqu'on n'est pas complètement sûr qu'on obtiendra bien un Just parce que cela donne une erreur plus claire et facile à tracer, mais ici fromJust est parfaitement approprié).
--
Jedaï
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager