F # interaktiv - wie alle in der aktuellen Sitzung definierten Variablen angezeigt werden

8

Wie kann ich in F # interaktiv eine Liste von Variablen / Funktionen sehen, die in dieser Sitzung definiert wurden? Wie eine Funktion whos() in Python oder ls() in R? Danke.

    
user 9081 14.02.2011, 20:43
quelle

3 Antworten

16

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 ...

iterieren     
Tomas Petricek 14.02.2011, 22:51
quelle
7

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 .

    
Stephen Swensen 24.08.2011 15:34
quelle
1

Leider gibt es in FSI zu diesem Zeitpunkt keine Möglichkeit, dies zu tun.

    
Martin Doms 14.02.2011 21:03
quelle

Tags und Links