2010-11-30 14 views
5

Ich habe gehört, dass die meisten Lisps unterstützen Bild von laufenden Programm in Datei speichern. Unterstützt das trügerische?Speichern Programm Bild in Guile

+2

Meinst du, eine Fortsetzung in eine Datei speichern? Ich denke, das würde die Frage für Leute, die es lesen, klären. – erjiang

+0

Ich glaube nicht, dass er das Speichern einer Dateifortsetzung meint, sondern Funktionen in einem repl definieren, den Zustand des Interpreters speichern, den Interpreter schließen und den Rechner neu starten möchte, dann den repl öffnen und das Image laden Datei, Wiederherstellen der Replik, wie es war, bevor er aufhörte. –

+0

Ja! Das wollte ich. Ich habe diese Funktion im SCM-Schema-Interpreter gefunden, aber nicht in List. – podcherkLIfe

Antwort

2

Ich denke, dass Interoperabilität mit anderen Sprachen ist ziemlich integral mit dem, was Guile ist, und so gibt es eine Menge von Staat in einem Interpreter Bild, das für Guile selbst undurchsichtig ist. Ich kenne Guile am besten aus der Arbeit mit dem Schema-Interpreter, der in gEDA integriert ist. Kannst du dir also vorstellen, nicht nur alle CONSes, sondern auch alle X-Fenster, die gschem geöffnet haben könnte, zu speichern? Es ist einfach nicht möglich, zuverlässig innerhalb von Guile zu tun. (Und ich bin mir nicht sicher, es wäre eine gute Idee, speichern-Image-Datei auch in "begrenzten" Fällen zu implementieren.)

Das heißt, schließlich können Sie den Programmstatus speichern, aber seit dem Programm Grenzen sind so porös, was mit Dateideskriptoren und Speicherkarten aus jeder Pore herausleckt, man merkt schnell, dass man den gesamten Computerzustand speichern muss. Dies geschieht jedoch in Form des Energiesparmodus "Hibernate"! Mir ist auch klar, dass du das hier nicht willst.

0

SBCL, eine Implementierung von Common Lisp, kann dies tun. (Siehe auch diese short SBCL tutorial). Wenn Sie daran interessiert sind, andere dynamische Sprachen zu erkunden, die den Systemstatus speichern und wiederherstellen (einschließlich Fortsetzungen, Dateideskriptoren oder was auch immer öffnen), werfen Sie einen Blick auf Squeak.