Gibt es eine einfache Möglichkeit, auf den REPL-Verlauf (z. B. als Liste) innerhalb von GHCi zuzugreifen?

8

Andere REPLs, z.B. Octave , haben spezielle Befehle zum Durchsuchen des Befehlsverlaufs. Ich finde das ziemlich praktisch (wenn ich jedoch ein solches Feature verwende, frage ich mich, warum ich den Befehl in einer Datei nicht richtig definiert habe?).

.

GHCi scheint keine solche Eigenschaft zu haben, und ich denke, dass es wahrscheinlich nicht sollte - solche Interaktivität würde Versuche wie Kontrolle von Emacs lästiger machen, als sie bereits sind.

Es klingt jedoch nach einer eher trivialen Aufgabe, einfach die gesamte Geschichte abzurufen und dann mit normalem Haskell zu durchsuchen. Ist so etwas schon irgendwo implementiert?

    
leftaroundabout 20.01.2015, 10:56
quelle

1 Antwort

2

Es gibt wahrscheinlich einen besseren Weg, dies zu tun, der mehr plattformübergreifend ist und in ein nettes kleines Paket zum Laden in einer .ghci-Datei oder ähnlichem umgewandelt werden kann, aber der schnelle und schmutzige Weg mit haskeline ist ziemlich einfach. Sie können einfach die Datei ghci_history für Ihr System einlesen, meine befindet sich bei C:/Users/bheklilr/AppData/Roaming/ghc/ghci_history , aber ich glaube an ein * nix-System sollte es bei ~/.ghci_history sein. Wählen Sie, was immer für Ihr System geeignet ist.

%Vor%

Leider scheint es zumindest für mich so zu sein, dass die History-Datei erst nach dem Beenden von GHCi aktualisiert wird. Daher sollte hist für eine bestimmte Session gleich sein (vorausgesetzt, Sie haben nur eine Instanz von GHCi). Dies ist eine ziemlich begrenzte API meiner Meinung nach, ich denke, es wäre nicht zu schwer, die Geschichte auf jeden Befehl oder zumindest jedes Paar Befehle zu entleeren, aber das ist nicht getan.

Alternativ können Sie CTRL-R und eine Handvoll anderer Befehle verwenden, um Ihren Verlauf zu durchsuchen, es ist viel nützlicher. Es ist besonders nützlich, weil es nach übereinstimmendem Subtext sucht.

    
bheklilr 20.01.2015, 14:48
quelle