Konvertiere einen String in einen Spaß

8

Ich versuche, ein Problem mit der Datei zu umgehen: consult / 1 erlaube keine Tupel mit Spaß in ihnen wie in diesem Beispiel:

%Vor%

Um das zu umgehen, überlege ich, den Spaß in einen String zu schreiben und ihn zu bewerten

%Vor%

Die Frage ist. Wie konvertiere ich die Zeichenfolge in einen Spaß?

    
Jon Gretar 05.01.2010, 20:16
quelle

5 Antworten

11
%Vor%

Beachten Sie, dass Sie am Ende Ihres Spaßausdrucks einen Punkt benötigen, z. S = "fun(X) -> X + 1 end." .

    
Zed 05.01.2010, 21:34
quelle
6

file:script/1 macht fast das, was Sie wollen - es bewertet eine Reihe von Erlang-Ausdrücken aus einer Datei und gibt das letzte Ergebnis zurück. Sie könnten es anstelle von file:consult/1 verwenden, aber Sie müssten das Format der Datei von "term. Term. Term" ändern. geben [term, term ,term] an "[term, term, term]." Geben Sie [term, term, term] ein - platzieren Sie einen einzelnen Ausdruck in der Datei anstelle einer Sequenz.

    
archaelus 06.01.2010 00:27
quelle
2

Ich möchte darauf hinweisen, dass Zeds Antwort einen interpretierten Spaß erzeugt. Wenn der Spaß aufgerufen wird, tritt er in den Evaluator ein, der damit beginnt, den von erl_parse:parse_exprs/1 zurückgegebenen abstrakten Syntaxbaum zu bewerten, den er erfasst hat. Blick auf den Spaß erstellt:

%Vor%

Man kann sehen, dass es sich über den syntaktischen syntaktischen Baum geschlossen hat, wie in env info zu sehen, und es ist ein Spaß, der in erlang_eval erstellt wurde, wie in module info zu sehen ist.

Es ist möglich, den Erlang-Compiler zu verwenden, um ein kompiliertes Modul zur Laufzeit zu erzeugen, und ein Zeiger darauf ist kompilieren: forms / 2 und code: load_binary / 3 . Aber die Details davon sollten wahrscheinlich in eine andere Stack-Overflow-Frage gehen.

    
Christian 05.01.2010 23:04
quelle
0

Vielleicht mithilfe des Moduls erl_eval ?

    
jldupont 05.01.2010 20:24
quelle
0
%Vor%     
ligaoren 29.02.2012 14:50
quelle

Tags und Links