Verwendung von Haskell für große Echtzeitsysteme: Wie (wenn?)?

Ich war gespannt zu verstehen, ob es möglich ist, die Kraft von Haskell auf eingebettete Echtzeitwelt anzuwenden, und habe beim googeln die gefundenAtom Paket. Ich würde annehmen, dass der Code in dem komplexen Fall alle klassischen C-Fehler aufweist - Abstürze, Speicherbeschädigungen usw., die dann auf den ursprünglichen Haskell-Code zurückgeführt werden müssten, der sie verursacht hat. Das ist also der erste Teil der Frage: "Wenn Sie die Erfahrung mit Atom gemacht haben, wie sind Sie mit der Aufgabe umgegangen, die Fehler auf niedriger Ebene in kompiliertem C-Code zu debuggen und sie im Haskell-Originalcode zu beheben?"

Ich habe nach weiteren Beispielen für Atom gesucht,dieser Blogbeitrag erwähnt den resultierenden C - Code 22KLOC (und offensichtlich keinen Code :), denenthaltenes Beispiel ist ein Spielzeug.Diese unddiese Referenzen haben etwas mehr praktischen Code, aber hier endet dieser. Und der Grund, warum ich "beträchtlich" in das Thema geschrieben habe, ist, dass ich am meisten daran interessiert bin, ob Sie Ihre Erfahrungen mit der Arbeit mit dem generierten C-Code im Bereich von 300KLOC + teilen können.

Da ich ein Haskell-Neuling bin, kann es offensichtlich auch andere Wege geben, die ich aufgrund meiner unbekannten Unbekannten nicht gefunden habe. Daher wären alle anderen Hinweise für die Autodidaktik in diesem Bereich sehr dankbar - und dies ist der zweite Teil der Frage. "Was wären andere praktische Methoden (wenn), um eine Echtzeitentwicklung in Haskell durchzuführen?" Wenn der Multicore auch im Bild ist, ist das ein zusätzliches Plus :-)

(Über die Verwendung von Haskell selbst für diesen Zweck: von dem, was ich in gelesen habedieser BlogbeitragDie Müllabfuhr und Faulheit in Haskell macht es in Bezug auf die Planung eher unbestimmt, aber vielleicht hat sich in zwei Jahren etwas geändert.Haskell-Programmierung in der Praxis Frage zu SO war die nächste, die ich zu diesem Thema finden konnte)

Hinweis: "Echtzeit" oben ist näher an "harte Echtzeit" - ich bin gespannt, ob es möglich ist, sicherzustellen, dass die Pausenzeit, wenn die Hauptaufgabe nicht ausgeführt wird, weniger als 0,5 ms beträgt.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage