Wie konvertiere ich einen String in den entsprechenden Code in PLT Scheme (der die Methode string->input-port
nicht enthält)? Zum Beispiel möchte ich diese Zeichenfolge konvertieren:
in diese Liste:
%Vor%Ist es möglich, dies zu tun, ohne eine Datei zu öffnen?
Scheme hat die Prozedur read
zum Lesen von s-Ausdrücken vom Eingabeport und Sie können eine Zeichenkette in den Eingabestream mit string->input-port
konvertieren. So können Sie ein Schema-Objekt aus einer Zeichenfolge mit
Ich habe kein Schema installiert, daher lese ich es nur aus der Referenz und hat es nicht wirklich getestet.
Aus dem PLT-Schema-Handbuch:
(open-input-string string [name-v])
erzeugt einen Eingangsport, der Bytes aus der UTF-8-Codierung (siehe Abschnitt 1.2.3) von string liest. Das optionale Argument name-v
wird als Name für den zurückgegebenen Port verwendet. Der Standardwert ist 'string
.
Aus dieser ähnlichen Frage können Sie comp.lang.scheme speichern Die Zeichenfolge in eine Datei liest dann daraus.
Das könnte etwa so aussehen wie dieser Beispielcode:
%Vor% Viele Schemas haben with-input-from-string str thunk
, das thunk
in einem Kontext ausführt, in dem str
der Standard-Eingabeport ist. Zum Beispiel im Gambit-Schema:
(with-input-from-string "(foo bar)"
(lambda () (read)))
ergibt:
(foo bar)
Das Lambda ist notwendig, weil eine thunk
eine Prozedur sein sollte, die keine Argumente annimmt.