Articles of haskell

Comment fonctionne la récursion de queue Haskell?

J’ai écrit cet extrait de code et je suppose que len est récursif, mais un débordement de stack se produit toujours. Qu’est-ce qui ne va pas? myLength :: [a] -> Integer myLength xs = len xs 0 where len [] l = l len (x:xs) l = len xs (l+1) main = print $ myLength […]

Test des actions IO avec Monadic QuickCheck

Quelqu’un peut-il me donner un bref exemple de test des actions IO en utilisant Monadic QuickCheck?

Comment atomique sont les thunks de GHC?

Comment GHC gère-t-il les thunks accessibles par plusieurs threads (soit des threads explicites, soit des processus internes évaluant les étincelles)? Est-il possible que plusieurs threads évaluent le même thunk, dupliquant le travail? Ou, si les thunks sont synchronisés, comment, pour que les performances ne souffrent pas?

Bon texte d’introduction sur la mise en œuvre du GHC?

Lorsque vous programmez en Haskell (et en particulier lorsque vous résolvez des problèmes liés à Project Euler, où les solutions sous-optimales ont tendance à accentuer les besoins en CPU ou en mémoire), je suis souvent perplexe quant à la manière dont le programme se comporte. Je regarde les profils, j’essaie d’introduire une certaine rigueur, j’ai […]

Qu’est-ce que les tuyaux / conduits tentent de résoudre?

J’ai vu des gens recommander une bibliothèque de pipes / conduits pour diverses tâches liées aux IO paresseuses. Quel problème ces bibliothèques résolvent-elles exactement? En outre, lorsque j’essaie d’utiliser des bibliothèques liées au piratage, il existe très probablement trois versions différentes. Exemple: attoparsec pipes-attoparsec attoparsec-conduit Cela me confond Pour mes tâches d’parsing, dois-je utiliser attoparsec […]

Comment écrire, “si typeclass a, alors a est aussi une instance de b par cette définition.”

J’ai une classe MyClass , et il y a une fonction qui produit une Ssortingng . Je veux utiliser ceci pour impliquer une instance de Show , afin que je puisse transmettre les types implémentant MyClass . Jusqu’à présent, j’ai class MyClass a where someFunc :: a -> a myShow :: a -> Ssortingng instance […]

forall à Scala

Comme indiqué ci-dessous, dans Haskell, il est possible de stocker dans une liste des valeurs de types hétérogènes avec certaines limites de contexte: data ShowBox = forall s. Show s => ShowBox s heteroList :: [ShowBox] heteroList = [ShowBox (), ShowBox 5, ShowBox True] Comment puis-je obtenir la même chose dans Scala, de préférence sans […]

Pourquoi Haskell manque-t-il des classes de caractères «évidentes»?

Considérons les langages orientés object: La plupart des personnes issues d’un contexte de programmation orientée object sont familiarisées avec les interfaces communes et intuitives dans différents langages qui capturent l’essence des interfaces Collection & List de Java. Collection fait référence à une collection d’objects qui n’a pas nécessairement un classement / indexation naturel. Une List […]

Programmation Haskell dans le monde réel

Développeur impérieux depuis quelques années, je n’avais jamais eu envie d’apprendre la functional programming. Il y a quelques mois, j’ai finalement décidé d’apprendre Haskell. C’est un langage plutôt cool, mais je suis perplexe sur la façon dont une application réelle pilotée par un événement serait programmée dans un tel langage. Connaissez-vous un bon tutoriel à […]

Injection de dépendance dans Haskell: résoudre la tâche de manière idiomatique

Quelle est la solution idiomatique Haskell pour l’dependency injection? Par exemple, supposons que vous ayez une interface frobby et que vous deviez passer une instance conforme à frobby (il pourrait y avoir plusieurs variétés de ces instances, disons foo et bar ). Les opérations typiques seraient: fonctions qui prennent une valeur X et renvoient une […]