Haskell ist eine funktionale Programmiersprache mit starker statischer Typisierung, verzögerter Auswertung, umfassender Unterstützung für Parallelität und Parallelität sowie einzigartigen Abstraktionsfunktionen.
Mit quantifizierten Einschränkungen kann ich gut ableiten Eq (A f)? Wenn ich jedoch versuche, Ord (A f) abzuleiten, schlägt dies fehl. Ich verstehe nicht, wie quantifizierte Einschränkungen verwendet werden, wenn die Einschränkungsklasse eine Oberklasse hat. Wie leite ich Ord (A f)und andere Klassen ab, die Superklassen haben? > newtype A …
Ich sehe ein sehr seltsames Verhalten, bei dem sich Haskells bracketFunktion je nach Verwendung stack runoder stack testVerwendung unterschiedlich verhält . Betrachten Sie den folgenden Code, in dem zwei verschachtelte Klammern zum Erstellen und Bereinigen von Docker-Containern verwendet werden: module Main where import Control.Concurrent import Control.Exception import System.Process main :: …
Ich bin kürzlich auf Situationen gestoßen, in denen ich eine Prädikatfunktion an eine andere Funktion übergeben muss, und die gesuchte Logik lautet häufig: "Stimmt dieser Wert mit diesem Muster überein?" Musterabgleich scheint in Deklarationen, doBlöcken und Listenverständnissen bevorzugt zu sein , aber es gibt eine Reihe von Funktionen, die ein …
Eine nette wahre Tatsache über die Verkettung ist, dass, wenn ich zwei Variablen in der Gleichung kenne: a ++ b = c Dann kenne ich den dritten. Ich möchte diese Idee in meinem eigenen Concat festhalten, damit ich eine funktionale Abhängigkeit verwende. {-# Language DataKinds, GADTs, FlexibleContexts, FlexibleInstances, FunctionalDependencies, KindSignatures, …
Vor kurzem habe ich angefangen, Haskell zu lernen, weil ich mein Wissen über funktionale Programmierung erweitern wollte und ich muss sagen, dass ich es bis jetzt wirklich liebe. Die Ressource, die ich derzeit verwende, ist der Kurs 'Haskell Fundamentals Part 1' über Pluralsight. Leider habe ich einige Schwierigkeiten, ein bestimmtes …
Es gibt 3 Funktionen, die das vorletzte Element in einer Liste finden. Der mitlast . init scheint viel schneller als der Rest. Ich kann nicht herausfinden warum. Zum Testen habe ich eine Eingabeliste von [1..100000000](100 Millionen) verwendet. Der letzte läuft fast sofort, während die anderen einige Sekunden dauern. -- slow …
Ich beschäftige mich derzeit mit einer Funktion, die so aussieht: foo = (\(a:b:c:d:e:f:_) -> foobar a b c d e f) . (++ repeat def) Mit anderen Worten, bei einer gegebenen Liste werden die ersten sechs Elemente für etwas verwendet, und wenn die Liste weniger als sechs Elemente lang ist, …
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 …
Ich habe diesen (zugegebenermaßen seltsamen) Code, der Objektiv und GHC verwendet. Aufzeichnungen : {-# LANGUAGE DataKinds, PolyKinds, FlexibleInstances, UndecidableInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} module Main where import Control.Lens import GHC.Records data Glass r = Glass -- just …
Problem Betrachten Sie das folgende Entwurfsproblem in Haskell. Ich habe eine einfache, symbolische EDSL, in der ich Variablen und allgemeine Ausdrücke (multivariate Polynome) wie z x^2 * y + 2*z + 1. Darüber hinaus möchte ich bestimmte symbolische Gleichungen beispielsweise über Ausdrücke x^2 + 1 = 1sowie Definitionen wie ausdrücken …
Das Applicative Typklasse repräsentiert laxe monoidale Funktoren, die die kartesische monoidale Struktur in der Kategorie der typisierten Funktionen beibehalten. Mit anderen Worten, angesichts der kanonischen Isomorphismen, (,)die eine monoidale Struktur bilden: -- Implementations left to the motivated reader assoc_fwd :: ((a, b), c) -> (a, (b, c)) assoc_bwd :: (a, …
Ein Muster, auf das ich jetzt schon mehrmals gestoßen bin, ist eines, bei dem eine Liste von Werten überprüft werden muss, indem ein Test darüber abgebildet wird und geprüft wird, ob einige oder alle Elemente bestanden wurden. Die typische Lösung besteht darin, nur die praktischen Einbauten allund zu verwenden any. …
Ich bin über einige irritierende Dinge gestolpert. Ich weiß, dass Haskell mit schwacher Kopfnormalform (WHNF) funktioniert und ich weiß, was das ist. Geben Sie den folgenden Code in ghci ein (ich verwende den Befehl: sprint, der den Ausdruck meines Wissens auf WHNF reduziert.): let intlist = [[1,2],[2,3]] :sprint intlist gibt …
Ich lerne Haskell und habe ein einfaches DB-Seed-Programm für Yesod durchgeführt, als ich auf dieses Verhalten gestoßen bin, das ich schwer zu verstehen finde: testFn :: Int -> Bool -> [Int] testFn a b = if b then replicate 10 a else [] Jessod GHCI-Sitzung: $ :t concatMap testFn [3] …
(Inspiriert von meiner Antwort auf diese Frage .) Betrachten Sie diesen Code (er soll das größte Element finden, das kleiner oder gleich einer bestimmten Eingabe ist): data TreeMap v = Leaf | Node Integer v (TreeMap v) (TreeMap v) deriving (Show, Read, Eq, Ord) closestLess :: Integer -> TreeMap v …
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.