Übergeben einer Funktion über das Netzwerk in Haskell

8

Angenommen das Folgende:

Ich habe einen Typ namens World , der einen Simulationszustand darstellt. Ich habe auch dieses Synonym:

%Vor%

Ist Haskell in der Lage, den Aktualisierungstyp so zu serialisieren, dass er über das Netzwerk übertragen werden kann? Oder gibt es andere Möglichkeiten? Vielleicht suche ich nicht so sehr nach einer Serialisierung der Code-Logik, als irgendeine Art von Zeiger oder Kennung, die am anderen Ende gelesen werden kann. Sowohl der Sende- als auch der Empfangsprozess führen dasselbe Haskell-Programm aus.

    
rlkw1024 16.04.2013, 19:44
quelle

2 Antworten

12

Das Paket Distributed-Process ist genau das, was Sie beschrieben haben. Da jedes Programm bereits die gleichen Funktionen hat, wird ein Zeiger auf die Funktion von einem Prozess zu einem anderen übergeben. Es wurde eine Serialisierung der Funktion als ein mögliches zukünftiges Ziel erwähnt, aber es klingt so, als würde es eine Änderung an GHC vornehmen. Die github-Seite ist eine gute Ressource für die vorhandenen Backends. Die github-Seiten sehen sehr nett aus mit einigen Beispielen, aber ich wusste bis vor kurzem nichts davon.

Die wenigen Haskell-Parallel-Digests rund um Ausgabe 11 erinnern mich daran, dass ich am meisten gelernt habe. Nehmen Sie sich auf jeden Fall etwas Zeit, um die github-Seiten zu erkunden. Ich weiß, dass ich es sein werde.

Wenn ich mich richtig erinnere, gibt es einfache Beispiele im Hackage-Paket oder im github-Repo, in denen Arbeitsstehlen gegen Arbeitsteilung und ähnliche Strategien untersucht werden.

    
Davorak 16.04.2013, 20:05
quelle
3

Ich schlage vor, eine DSL-Datenstruktur zu erstellen. Leider hat Haskell keine Laufzeitkompilierungsfunktionen, aber es sollte ausreichen.

    
Karl Damgaard Asmussen 16.04.2013 20:10
quelle

Tags und Links