Articles of haskell

Profilage du code Haskell haute performance

J’ai un code Haskell très performant – la boucle interne se comstack en 6 instructions d’assemblage. Modifier la boucle interne pour qu’elle soit moins efficace n’a pas d’impact significatif sur les performances, ce qui suggère que la boucle interne n’est pas le goulot d’étranglement. Cependant, lorsque j’active le profilage, le code d’assembly généré pour la […]

Pourquoi la multiplication ne fait-elle que court-circuiter d’un côté

J’étais décontenancé avec les fix et après avoir joué avec, j’ai rencontré un comportement bizarre, à savoir que 0 * undefined est *** Exception: Prelude.undefined et undefined * 0 est 0 . Ce qui signifie également que le fix (0 *) est *** Exception: <> et que le fix (* 0) est 0 . Après […]

Comment prendre le contrôle d’un tas de 5 Go dans Haskell?

Actuellement, j’expérimente un petit serveur Web Haskell écrit en Snap qui charge et met à la disposition du client beaucoup de données. Et j’ai beaucoup de mal à prendre le contrôle du processus serveur. À des moments aléatoires, le processus utilise beaucoup de CPU pendant quelques secondes à quelques minutes et devient irresponsable aux demandes […]

Éviter les ascenseurs avec des transformateurs monad

J’ai un problème auquel une stack de transformateurs monad (ou même un transformateur monad) sur IO . Tout est bon, sauf que l’utilisation de lift avant chaque action est terriblement agaçante! Je soupçonne qu’il n’y a vraiment rien à faire à ce sujet, mais j’ai pensé que je demanderais quand même. Je suis conscient de […]

Scala: Comment définir des parameters de fonction “génériques”?

J’essaie d’apprendre la Scala maintenant, avec un peu d’expérience dans Haskell. Une chose qui m’a paru étrange est que tous les parameters de fonction de Scala doivent être annotés avec un type – ce que Haskell ne requirejs pas. Pourquoi est-ce? Pour essayer de le présenter comme un exemple plus concret: une fonction add est […]

Appeler Haskell à partir du code C ++

J’écris actuellement une application en C ++ et j’ai constaté que certaines de ses fonctionnalités seraient mieux écrites en Haskell. J’ai vu des instructions sur l’ appel de Haskell à partir du code C , mais est-il possible de faire la même chose avec C ++? EDIT: Pour clarifier, ce que je cherche est un […]

Pourquoi Haskell est-il valide à 2 + x = 7?

Quand j’essaie de comstackr main = putStrLn $ show x where 2 + x = 7 GHC se plaint error: Variable not in scope: x | 1 | main = putStrLn $ show x | ^ Il semble donc que 2 + x = 7 soit en lui-même syntaxiquement valide, bien qu’il ne définisse pas […]

éléments uniques dans une liste de haskell

OK, cela va probablement être dans le prélude, mais: existe-t-il une fonction de bibliothèque standard pour trouver les éléments uniques dans une liste? ma (ré) implémentation, pour clarification, est la suivante: has :: (Eq a) => [a] -> a -> Bool has [] _ = False has (x:xs) a | x == a = True […]

Sous-ensemble indépendant des ensembles de paquets de cabale

Étant donné un ensemble de packages de cabale, existe-t-il un moyen de calculer automatiquement un sous-ensemble de packages indépendants? En d’autres termes, sous-ensemble de packages qui suffira à les installer tous. Pour [network,parsec] la réponse est [network] car le network dépend de parsec . Pour [network,containers] la réponse est [network,containers] car: network ne dépend pas […]

Pourquoi récursif `let` rend l’espace effcient?

J’ai trouvé cette déclaration en étudiant la Programmation Réactive Fonctionnelle, à partir de “Brancher une fuite d’espace avec une flèche” de Hai Liu et Paul Hudak (page 5): Suppose we wish to define a function that repeats its argument indefinitely: repeat x = x : repeat x or, in lambdas: repeat = λx → x […]