Sie können dies wahrscheinlich mit .NET Reflection implementieren - lokale Variablen und Funktionen sind als statische Eigenschaften / Methoden von Typen in einer einzigen dynamischen Assembly definiert. Sie können diese Assembly abrufen, indem Sie GetExecutingAssembly
(in FSI selbst) aufrufen und dann die Typen durchsuchen, um alle geeigneten Eigenschaften zu finden.
Das Folgende ist eine vernünftig funktionierende Funktion zum Abrufen lokaler Variablen:
%Vor%Hier ist ein Beispiel:
%Vor% Die Funktion gibt einen "faulen" Wert zurück (weil dies der einfachste Weg war, es zu schreiben, ohne vorher Werte von allen Variablen zu lesen, was langsam wäre), also müssen Sie% co_de verwenden % Eigentum. Beachten Sie auch, dass Sie Value
zurück erhalten - da das F # -Typsystem den Typ nicht kennen kann - müssen Sie es dynamisch verwenden. Sie können alle Namen erhalten, indem Sie einfach über object
...
Ich entwickle FsEye , das eine modifizierte Version der @Tomas-Technik verwendet (filtert Einheit und Funktion heraus) bewertete vars und nimmt nur die letzte it
var), um alle FSI-Sitzungsvariablen bei jeder Übergabe zu erfassen und sie visuell in einem Baum anzuzeigen, so dass Sie in ihre Objektgraphen navigieren können.
Sie können meine geänderte Version hier sehen .
Leider gibt es in FSI zu diesem Zeitpunkt keine Möglichkeit, dies zu tun.
Tags und Links f# f#-interactive