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 versuche, eine Familie von Zustandsautomaten mit etwas anderen Arten von Zuständen zu definieren. Insbesondere haben die "komplexeren" Zustandsmaschinen Zustände, die durch Kombinieren der Zustände einfacherer Zustandsmaschinen gebildet werden. (Dies ähnelt einer objektorientierten Einstellung, bei der ein Objekt mehrere Attribute hat, die auch Objekte sind.) Hier ist ein vereinfachtes Beispiel …
Warum sind diese nicht gleichwertig? show $ if someCondition then someInt else some double und if someCondition then show someInt else show someDouble Ich verstehe, dass Sie, wenn Sie den if ... elseTeil im ersten Beispiel für sich selbst auf einen Ausdruck isolieren, seinen Typ nicht mit einem anonymen Summentyp …
Ich habe wirklich große Probleme damit, callCC zu verstehen. Ich bekomme die Kraft von Fortsetzungen und habe das Konzept in einigen meiner Projekte verwendet, um coole Konzepte zu erstellen. Aber ich musste nie etwas mit größeren Fähigkeiten als verwenden cont :: ((a->r)->r)-> Cont r a. Nachdem ich es benutzt habe, …
Ich versuche, mehrere Diagramme in einer Art Tabelle zusammenzustellen. Ich denke, das nennt man "Indexdruck" , Fotografen machen das, wenn sie viele Fotos gleichzeitig überprüfen müssen. Wie auch immer, das ist der Code: main :: IO () main = mainWith @(Diagram B) $ (tile . fmap renderOne) examples renderOne :: …
Geschlossen . Diese Frage muss fokussierter sein . Derzeit werden keine Antworten akzeptiert. Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage so, dass sie sich nur auf ein Problem konzentriert, indem Sie diesen Beitrag bearbeiten . Geschlossen vor 7 Monaten . Vor kurzem versuche ich, Haskell in einigen meiner …
Ich verstehe die seq- Funktion und warum es notwendig ist, Strenge für Effizienz einzuführen. Was ich nicht verstehe ist, warum heißt dieses Primitiv seq(und hat nichts mit Strenge zu tun)?
Es ist bekannt, dass natürliche Transformationen mit Typensignatur a -> a Identitätsfunktionen sein müssen. Dies folgt aus dem Yoneda-Lemma, kann aber auch direkt abgeleitet werden. Diese Frage verlangt nach der gleichen Eigenschaft, aber nach Monadenmorphismen anstelle natürlicher Transformationen. Betrachten Sie Monadenmorphismen M ~> Nzwischen Monaden. (Dies sind natürliche Transformationen M …
Ich bin daran interessiert, eine effiziente Haskell-Funktion zu schreiben triangularize :: [a] -> [[a]], die eine (möglicherweise unendliche) Liste in eine Liste von Listen "trianguliert". Zum Beispiel triangularize [1..19]sollte zurückkehren [[1, 3, 6, 10, 15] ,[2, 5, 9, 14] ,[4, 8, 13, 19] ,[7, 12, 18] ,[11, 17] ,[16]] Mit …
Ich versuche, die Assoziativität von Listen auf Typebene so zu beweisen, dass ich zwischen äquivalenten Typen konvertieren kann, ohne Einschränkungen mitzunehmen. Angenommen, die Standarddefinition der Verkettung: type family (++) (xs :: [k]) (ys :: [k]) :: [k] where '[] ++ ys = ys (x ': xs) ++ ys = x …
Im recursion-schemesPaket sind folgende Typen definiert: newtype Fix f = Fix (f (Fix f)) newtype Mu f = Mu (forall a. (f a -> a) -> a) Sind sie isomorph? Wenn ja, wie beweisen Sie das?
Die Kategorie der Mengen ist sowohl kartesisch monoidal als auch kokartesisch monoidal. Die Arten der kanonischen Isomorphismen, die diese beiden monoidalen Strukturen bezeugen, sind nachstehend aufgeführt: type x + y = Either x y type x × y = (x, y) data Iso a b = Iso { fwd :: …
Ich habe den Typ des Arguments einer Funktion eingeschränkt, anstatt den Typ der Funktion einzugeben. Ich dachte, dies würde entweder einen Syntaxfehler verursachen oder dem Typ der Funktion weitere Informationen hinzufügen. Es sieht jedoch so aus, als würde die Einschränkung vollständig ignoriert. {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE RankNTypes #-} …
Ich versuche, meinen eigenen Datentyp zu erstellen, der Teil der Monad-Klasse sein wird, aber newtype Container a = Container a deriving Monad gibt mir diesen Fehler: * Can't make a derived instance of `Monad Container' (even with cunning GeneralizedNewtypeDeriving): cannot eta-reduce the representation type enough * In the newtype declaration …
Wenn ich nach Haskell komme, versuche ich, so etwas wie Numpys Umformung mit Listen zu reproduzieren . Wenn Sie eine flache Liste haben, formen Sie sie in eine n-dimensionale Liste um: import numpy as np a = np.arange(1, 18) b = a.reshape([-1, 2, 3]) # b = # # array([[[ …
Ich möchte ein Programm schreiben, dessen Hauptthread einen neuen Thread zur Berechnung gibt und darauf wartet, dass er eine Zeit lang beendet wird. Wenn der untergeordnete Thread nicht in einer bestimmten Zeit beendet wird, wird eine Zeitüberschreitung festgestellt und beendet. Ich habe den folgenden Code dafür. import Control.Concurrent fibs :: …
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.