Wichtiger Hinweis: Transient wird in ein neues Repo übersetzt
Dieses Repo ist veraltet
Bitte für die letzte Version gehen Sie zu:
https://github.com/transient-haskell/transient-stack
Es gibt alle Haskell-Pakete, einschließlich Distributed Computing (Transient-University) und Client-Side-Web (Axiom)

HINWEIS: Verteilte Computer- und Webprimitive sind in transienten und axiom. Einige Beispiele bei transienten Untersuchungen
transient :Rahul Muttineni @rahulmutt Nov. 09 2016 03:40 Leadentwickler von ETA (der JVM -Haskell -Compiler)
Es ist ein bisschen Gedanken darüber, dass es so ist, als würde man eine Aufstiegs-Mundliste verwenden, aber es ist sehr, sehr cool. Für Anfänger Haskellers wäre eine wirklich nützliche Visualisierung dessen, was passiert, wenn Sie verschiedene verteilte/parallele Dinge durchführen. Es ist fast schockierend, wie mühelos Sie Berechnungen über Threads/Knoten ausführen können.
Der coole Teil ist die Komposition in der verteilten Einstellung. Sie können monadische Funktionen höherer Ordnung erfüllen, mit denen Sie eine lange Kette verteilter Transaktionen über wormhole und teleport zusammenstellen und wiederverwenden können . Ein weiterer Vorteil ist, dass die Transaktion die erste Klasse wird und Sie genau sehen können, was an einem Ort vor sich geht, anstatt die Logik über Akteure hinweg zu verteilen, was den Code -Ereignisrückruf entspricht, wie Sie angegeben sind.
https://gitter.im/transient-transient-universe-hplay/lobby?at=58228caa35e6cf054773303b
Einer der Träume von Software Engineering ist die uneingeschränkte Komposition.
Dies kann in diese Begriffe gestellt werden:
Lassen Sie ap1 und ap2 zwei Anwendungen mit willkürlicher Komplexität mit allen Effekten, einschließlich mehrerer Threads, asynchronem IO, Indeterminismus, Ereignissen und möglicherweise verteilten Computing.
Dann die Kombinationen:
- ap1 <|> ap2 -- Alternative expression
- ap1 >>= x -> ap2 -- monadic sequence
- ap1 <> ap2 -- monoidal expression
- (,) <$> ap1 <*> ap2 -- Applicative expression
sind möglich, wenn die Typen übereinstimmen, und generieren neue Anwendungen, die ebenfalls komponierbar sind.
Transient macht genau das.
Die Operatoren <$> <*> und <> Express Parallelität, der Operator <|> Ausdrücken Parallelität und >>= zur Sequenzierung von Threads, verteilten Prozessen oder Web -Widgets. Selbst in Gegenwart dieser und anderer Effekte ist alles komponierbar.
Zu diesem Zweck ist Transient eine erweiterbare Auswirkungen mit allen wichtigen Effekten und Primitiven für Parallelität, Ereignisse, asynchrones IO, frühe Beendigung, Nichtdeterminismus-Protokollierung und verteiltes Computing. Da es möglich ist, es mit mehr Effekten zu erweitern, ohne Monad -Transformatoren hinzuzufügen, ist die Kompositionsfähigkeit gesichert.
Dieses Programm wird "Hello World" von N -Knoten streamen, wenn Sie in der Konsole "Feuer" eingeben
main = keep $ initNode $ inputNodes <|> distribStream
distribStream = do
local $ option " fire " " fire "
r <- clustered . local . choose $ repeat " hello world "
localIO $ print rLesen Sie das Tutorial, um zu wissen, wie man es kompiliert und aufgerufen.
In diesem Programm wird ein Link im Browser- und Stream -Fibonnacci -Nummern an den Browser vorgelegt, wenn Sie darauf klicken. (Wenn Sie Docker haben, können Sie es Straight aus der Konsole ausführen. Sehen Sie sich das an
main = keep . initNode $ webFib
webFib = onBrowser $ do
local . render $ wlink () (h1 " hello fibonacci numbers " )
r <- atRemote $ do
r <- local . threads 1 . choose $ take 10 fibs
localIO $ print r
localIO $ threadDelay 1000000
return r
local . render . rawHtml $ (h2 r)
where
fibs = 0 : 1 : zipWith (+) fibs ( tail fibs) :: [ Int ]Dieses Programm kombiniert beide Funktionen:
main = keep . initNode $ inputNodes <|> webFib <|> distribStreamDas Wiki ist benutzerorientierter
Meine Videositzungen in LiveCoding.TV sind nicht als Tutorials oder Präsentationen gedacht, sondern einige der neuesten Funktionen.
Die Artikel sind technischer:
Diese Artikel enthalten ausführbare Beispiele (nicht jetzt, da die Website die Ausführung von Haskell -Snippets nicht mehr unterstützt).
Sobald die Komposition im Großraum möglich ist, gibt es eine unendliche Menge von Ideen, die realisiert werden können. Es gibt kurzfristige und langfristige Ziele. Ein Entwicklungsstatus wird regelmäßig veröffentlicht.
Zu den verrückten gehört die Möglichkeit, diesen Rahmen auf andere Sprachen auszudehnen und sie interoperabel zu machen. Behandeln Sie ganze verpackte Anwendungen als Komponenten und docken Sie als LEGO -Teile in einer neuen Schicht des Betriebssystems an, in der die Schale eine solche Art von Typ -Safe -Docking ermöglicht. Dieser komponierbare Docker ermöglicht alle Arten von Komposition, während die aktuelle Docker -Plattform nur eine Form von abgebautem Monoid ist, die nicht berechnet.
Willst du einen Beitrag leisten? Stellen Sie sicher, dass Sie unsere Richtlinien für Mitwirkende gelesen haben. Wir möchten von Ihnen und Ihren Ideen hören und uns mit anderen Mitwirkenden in Verbindung setzen:
Die Ausgabenseite für transient
Die Ausgabenseite für Transient-University
Die Ausgabenseite für Axiom
Sobald Sie etwas Interessantes lernen, können Sie zum Wiki beitragen
Sie können auch an den Hauptentwickler spenden, um die Widmung von mehr Zeit für die Ausführung der potenziellen Vorteile der echten Softwareverbesserbarkeit im gesamten Stapel zu ermöglichen.