Articles of haskell

Comment puis-je utiliser GHCi avec les nouveaux sandbox 1.17 cabal?

J’ai essayé la tête de cabale qui supporte les bacs à sable similaires à cabal-dev. Cependant, il n’y a pas encore de support pour un équivalent en cabal-dev ghci et apparemment pas de support prévu pour la prochaine version. Y a-t-il une incantation que je peux utiliser pour contourner ce cabal-dev ghci et obtenir quelque […]

Quelle technologie d’parsing Haskell est la plus agréable à utiliser et pourquoi?

“Agréable” signifiant, par exemple: vous pouvez écrire des grammaires de manière “naturelle” sans avoir à les réécrire de manière compliquée et sans avoir à introduire un passe-partout ennuyeux. Disons aux fins de cette question que, à moins que les performances d’une technologie ne soient pathologiquement mauvaises, la performance n’est pas le plus gros problème ici. […]

Haskell IO et dossiers de fermeture

Lorsque j’ouvre un fichier à lire dans Haskell, j’ai constaté que je ne pouvais pas utiliser le contenu du fichier après l’avoir fermé. Par exemple, ce programme imprimera le contenu d’un fichier: main = do inFile <- openFile "foo" ReadMode contents <- hGetContents inFile putStr contents hClose inFile Je m’attendais à ce que l’échange de […]

Correction des problèmes relevés par la vérification de ghc-pkg

C’est plutôt sympa que ghc-pkg check les paquets cassés et pourquoi ils sont cassés. Mais pour autant que je sache, il n’y a pas de moyen automatisé de prendre en charge ces paquets cassés. Quelle est la manière recommandée de traiter les paquets cassés? (De préférence pas réinstaller GHC)

Haskell: Pourquoi utiliser Proxy?

Dans Haskell, un proxy est une valeur témoin de type qui facilite le passage de certains types data Proxy a = Proxy Un exemple d’utilisation est ici dans le schéma json : class JSONSchema a where schema :: Proxy a -> Schema Vous pouvez donc faire un schema (Proxy :: Proxy (Int,Char)) pour obtenir la […]

En tournant A => M en M

Pour une monade M , est-il possible de transformer A => M[B] en M[A => B] ? J’ai essayé de suivre les types en vain, ce qui me fait penser que ce n’est pas possible, mais je pensais demander quand même. En outre, la recherche de Hoogle pour a -> mb -> m (a -> […]

Différence entre print et putStrLn dans Haskell

Je suis confus. J’essaie d’utiliser print , mais je sais que les gens appliquent putStrLn . Quelles sont les différences réelles entre eux? print $ function putStrLn $ function

Comment les listes sont-elles implémentées dans Haskell (GHC)?

J’étais juste curieux de connaître les détails exacts d’implémentation des listes dans Haskell (les réponses spécifiques au GHC sont correctes) – s’agit-il de listes liées naïves ou ont-elles des optimisations spéciales? Plus précisement: Est-ce que la length et (!!) (par exemple) doivent parcourir la liste? Si oui, leurs valeurs sont-elles mises en cache de quelque […]

Un compilateur peut-il détecter automatiquement les fonctions pures sans les informations de type sur la pureté?

Je discute donc avec mon ami qui prétend qu’un compilateur comme GCC peut détecter automatiquement une fonction pure sans aucune information de type. Je doute que. Les langages comme D ou Haskell ont de la pureté dans leurs systèmes de type et un programmeur définit explicitement quelle fonction est pure ou non. Une fonction pure […]

Dans Haskell, pourquoi n’y a-t-il pas un TypeClass pour les choses qui peuvent agir comme des listes?

Je lis Apprendre un Haskell et je me demande pourquoi tant de choses agissent comme une liste, et rien dans le Prélude n’utilise la fonctionnalité native des classes de type pour configurer cela: “La version de bytessortingng de: est appelée contre. Elle prend un octet et une bytessortingng et place l’octet au début. Elle est […]