Haskell est un langage de programmation fonctionnel comprenant un typage statique fort, une évaluation paresseuse, un support étendu du parallélisme et de la concurrence, et des capacités d'abstraction uniques.
Pourquoi GHCi donne-t-il une réponse incorrecte ci-dessous? GHCi λ> ((-20.24373193905347)^12)^2 - ((-20.24373193905347)^24) 4.503599627370496e15 Python3 >>> ((-20.24373193905347)**12)**2 - ((-20.24373193905347)**24) 0.0 MISE À JOUR J'implémenterais la fonction (^) de Haskell comme suit. powerXY :: Double -> Int -> Double powerXY x 0 = 1 powerXY x y | y < 0 = …
Tout comme le titre l'indique: quelles garanties existe-t-il pour qu'une unité de retour de fonction Haskell soit évaluée? On pourrait penser qu'il n'est pas nécessaire d'exécuter une sorte d'évaluation dans un tel cas, le compilateur pourrait remplacer tous ces appels par une ()valeur immédiate à moins que des demandes explicites …
En tant qu'État, la monade peut être factorisée en produit (gauche - fonction) et lecteur (droite - représentable). Existe-t-il un moyen de factoriser la Monade de Continuation? Ci-dessous le code est ma tentative, qui ne vérifiera pas le type -- To form a -> (a -> k) -> k {-# …
J'écris un package de dessin avec certaines parties et j'ai des opérateurs et des types de données dispersés. Cependant, je ne veux pas que les utilisateurs ajoutent les modules correspondants à chaque fois, car ce serait assez compliqué, par exemple, j'aurais une Pointclasse, un Monoidrôle et une Styleclasse dans des …
J'ai un type Id aet j'essaie d'empêcher toute contrainte accidentelle, par exemple, un Id Doubleà un Id Int. Si je comprends bien les rôles de type, les éléments suivants ne doivent pas être compilés. {-# LANGUAGE RoleAnnotations #-} import Data.Coerce (coerce) type role Id nominal newtype Id a = Id …
J'essaie de créer une fonction F # qui renverra la somme d'une liste de ints d'imbrication arbitraire. C'est à dire. cela fonctionnera pour a list<int>, a list<list<int>>et a list<list<list<list<list<list<int>>>>>>. En Haskell, j'écrirais quelque chose comme: class HasSum a where getSum :: a -> Integer instance HasSum Integer where getSum = …
J'essaie de comprendre les types existentiels dans Haskell et je suis tombé sur un PDF http://www.ii.uni.wroc.pl/~dabi/courses/ZPF15/rlasocha/prezentacja.pdf Veuillez corriger mes compréhensions ci-dessous que j'ai jusqu'à présent. Les types existentiels ne semblent pas être intéressés par le type qu'ils contiennent, mais les modèles qui les correspondent disent qu'il existe un type, nous …
Avec des contraintes quantifiées, je peux dériver Eq (A f)très bien? Cependant, lorsque j'essaie de dériver Ord (A f), cela échoue. Je ne comprends pas comment utiliser des contraintes quantifiées lorsque la classe de contraintes a une superclasse. Comment puis-je dériver Ord (A f)et d'autres classes qui ont des superclasses? …
Je vois un comportement très étrange où la bracketfonction de Haskell se comporte différemment selon qu'elle est utilisée stack runou non stack test. Considérez le code suivant, où deux crochets imbriqués sont utilisés pour créer et nettoyer les conteneurs Docker: module Main where import Control.Concurrent import Control.Exception import System.Process main …
J'ai récemment rencontré des situations où je dois passer une fonction de prédicat à une autre fonction, et bien souvent la logique que je recherche est essentiellement "cette valeur correspond-elle à ce modèle?" La correspondance de modèle semble être préférée dans les déclarations, les doblocs et les listes de compréhension, …
Un beau fait vrai sur la concaténation est que si je connais deux variables dans l'équation: a ++ b = c Alors je connais le troisième. Je voudrais capturer cette idée dans mon propre concat donc j'utilise une dépendance fonctionnelle. {-# Language DataKinds, GADTs, FlexibleContexts, FlexibleInstances, FunctionalDependencies, KindSignatures, PolyKinds, TypeOperators, …
Récemment, j'ai commencé à apprendre Haskell parce que je voulais élargir mes connaissances sur la programmation fonctionnelle et je dois dire que je l'aime vraiment jusqu'à présent. La ressource que j'utilise actuellement est le cours «Haskell Fundamentals Part 1» sur Pluralsight. Malheureusement, j'ai du mal à comprendre une citation particulière …
Il y a 3 fonctions données ci-dessous qui trouvent le dernier mais le deuxième élément d'une liste. Celui qui utilise last . initsemble beaucoup plus rapide que les autres. Je n'arrive pas à comprendre pourquoi. Pour les tests, j'ai utilisé une liste d'entrée de [1..100000000](100 millions). Le dernier s'exécute presque …
Je traite actuellement une fonction qui va comme ceci: foo = (\(a:b:c:d:e:f:_) -> foobar a b c d e f) . (++ repeat def) En d'autres termes, étant donné une liste, il utilise les six premiers éléments pour quelque chose, et si la liste est inférieure à six éléments, il …
type BSTree a = BinaryTree a data BinaryTree a = Null | Node (BinaryTree a) a (BinaryTree a) deriving Show flattenTree :: BinaryTree a -> [a] flattenTree tree = case tree of Null -> [] Node left val right -> (flattenTree left) ++ [val] ++ (flattenTree right) isBSTree :: (Ord …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.