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.
Ich lerne Haskell und bin auf folgenden Code gestoßen: fibs = 0 : 1 : zipWith (+) fibs (tail fibs) Ich habe ein bisschen Probleme beim Parsen, was die Funktionsweise betrifft. Es ist sehr ordentlich, ich verstehe, dass nichts mehr benötigt wird, aber ich würde gerne verstehen, wie Haskell es …
Gibt es irgendwo eine vollständige Liste der zulässigen Zeichen oder eine Regel, die bestimmt, was in einem Bezeichner gegenüber einem Operator verwendet werden kann?
Nach meinem Verständnis sind Teilfunktionen Funktionen, die wir erhalten, wenn wir weniger Parameter an eine Funktion übergeben als erwartet. Wenn dies beispielsweise in Python direkt gültig wäre: >>> def add(x,y): ... return x+y ... >>> new_function = add(1) >>> new_function(2) 3 Im obigen Snippet new_functionist eine Teilfunktion. Laut Haskell Wiki …
Ich arbeite derzeit an einem einfachen Interpreter für eine Programmiersprache und habe einen Datentyp wie diesen: data Expr = Variable String | Number Int | Add [Expr] | Sub Expr Expr Und ich habe viele Funktionen, die einfache Dinge tun wie: -- Substitute a value for a variable substituteName :: …
Ich bin in meinem Musikprojekt auf ein kleines ästhetisches Problem gestoßen, das mich seit einiger Zeit nervt. Ich habe einen Typ data Key = C | D | ...und kann einen Scaleaus a Keyund a konstruieren Mode. Das Modeunterscheidet zB eine Dur- und eine Moll-Tonleiter. Ich kann den ModeTyp als …
Im Modul System.Infosehe ich folgende Funktionen: os :: String arch :: String compilerName :: String compilerVersion :: Version Warum gibt es dort keine IO? Sie greifen auf das System zu ... irre ich mich? Meine Erwartung war ungefähr so: os :: IO String arch :: IO String compilerName :: IO …
Angenommen, ich habe einen Parameter, der nur zum Nutzen des Typsystems existiert, zum Beispiel wie in diesem kleinen Programm: {-# LANGUAGE GADTs #-} module Main where import Data.Proxy import Data.List data MyPoly where MyConstr :: Proxy a -> a -> (Proxy a -> a -> Int -> Int) -> MyPoly …
Ich lerne Haskells Bewerber. Es scheint mir (ich liege wahrscheinlich falsch), dass diepure Funktion nicht wirklich benötigt wird, zum Beispiel: pure (+) <*> [1,2,3] <*> [3,4,5] kann geschrieben werden als (+) <$> [1,2,3] <*> [3,4,5] Kann jemand den Nutzen erklären, den die pureFunktion gegenüber der expliziten Zuordnung bietet fmap?
Diese Frage ist nicht subjektiv. In dem Buch, auf das verwiesen wird, wird ein sehr spezifisches Verb verwendet, und ich würde gerne verstehen, was die Implikation dieser Formulierung bedeutet, weil ich befürchte, etwas falsch zu verstehen. Aus Learn You a Haskell ist der folgende Absatz der dritte und letzte, der …
Vorschläge (P -> Q) -> QundP \/ Q sind gleichwertig. Gibt es eine Möglichkeit, diese Gleichwertigkeit in Haskell zu bezeugen: from :: Either a b -> ((a -> b) -> b) from x = case x of Left a -> \f -> f a Right b -> \f -> b …
Mir scheint, dass Sie immer Funktionsargumente übergeben können, anstatt eine Typklasse zu verwenden. Zum Beispiel, anstatt eine Gleichheitstypklasse zu definieren: class Eq a where (==) :: a -> a -> Bool Die Verwendung in anderen Funktionen zur Angabe des Typarguments muss eine Instanz von Eq: elem :: (Eq a) => …
Diese Frage ist eine theoretische Frage zu Haskell-Funktionen, die Argumente jeglicher Art annehmen können. Gibt es einen Unterschied zwischen der Funktionsweise mit den Typensignaturen von a -> b -> a und c -> a -> c instanziiert werden? Jede Hilfe wird geschätzt.
Ich studiere derzeit Haskell und versuche, ein Projekt zu verstehen, das Haskell zur Implementierung kryptografischer Algorithmen verwendet. Nachdem ich Learn You a Haskell for Great Good online gelesen habe , beginne ich, den Code in diesem Projekt zu verstehen. Dann stellte ich fest, dass ich beim folgenden Code mit dem …
Als Übung schreibe ich einen Parser für Haskell von Grund auf neu. Bei der Erstellung des Lexers habe ich die folgenden Regeln im Haskell 2010-Bericht beachtet : Ziffer → ascDigit | uniDigit ascDigit → 0| 1| … | 9 uniDigit → beliebiges Unicode-Dezimalstellen- Oktit → 0| 1| … | 7 …
Viele Arten von Optiken haben eine Van-Laarhoven-Darstellung. Beispielsweise kann ein LensTyp Lens s t a b wie folgt dargestellt werden: Functor f => (a -> f b) -> s -> f t In Traversalähnlicher Weise kann a auf ähnliche Weise dargestellt werden, wobei die FunctorEinschränkung gegen Folgendes ausgetauscht wird Applicative: …
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.