2016-03-21 5 views
0

Ich bin völlig neu in SML und ich habe keine Ahnung, wie man mit irgendetwas in Verbindung damit arbeitet. Ich soll den SMLNJ-Compiler verwenden und ich bin derzeit mit Notepad ++ codieren. Aber wie kompiliere ich das Programm genau? Kopiere ich den Code in die Befehlszeile der SMLNJ und füge ihn ein? Oder gibt es eine Umgebung für SMLNJ, kann ich meinen Code tatsächlich einprogrammieren und kompilieren? BITTE HILFE!Wie kompiliere ich SML mit SMLNJ, während der Code in Notepad ++ ist?

+3

Wenn Sie mit "kompilieren" meinen "kompilieren zu einer eigenständigen ausführbaren Datei" - machen Sie sich darüber keine Sorgen. SML/NJ hat eine Kommandozeilen-basierte REPL (Read-Evaluate-Print-Loop), die * eigentlich * ein incremental Compiler ist, dh neu definierte Funktionen im Kontext von aktuell definierten Funktionen kompiliert. Zu Beginn werden Sie mit kurzen Snippets experimentieren, die direkt in die REPL geschrieben werden. Früher oder später möchten Sie den Code in etwas wie NotePad ++ schreiben. Schreiben Sie einfach die Datei, speichern Sie sie mit einer '.sml'-Erweiterung, dann im REPL-Typ' use "Dateiname"; 'und sie lädt. –

+0

@ JohnColeman: Care, um das als Antwort zu posten? – ruakh

+0

@ruakh Ich zögerte, dies mit dem zu tun, was ich hatte, aber Ihr Kommentar inspirierte mich, es zu erweitern. –

Antwort

1

Wenn Sie mit "kompilieren" meinen, "kompilieren zu einer eigenständigen ausführbaren Datei" - machen Sie sich keine Sorgen darüber, wenn das erste Lernen der Sprache als vollständige Antwort etwas beteiligt ist. Im Prinzip ist es möglich, obwohl es praktische Probleme zu geben scheint (wie this ausgezeichnete Antwortdetails).

Auf der anderen Seite hat SML/NJ eine Befehlszeile basierte REPL (Read-Evaluate-Print-Loop), die ist ein Compiler. Es ist ein incremental compiler - das bedeutet, dass neu definierte Funktionen im Kontext der aktuell definierten Funktionen kompiliert werden. Zu Beginn werden Sie mit kurzen Snippets experimentieren, die direkt in die REPL geschrieben werden. Früher oder später möchten Sie den Code in etwas wie NotePad ++ schreiben. Schreiben Sie einfach die Datei mit einer .sml Erweiterung speichert, dann in dem REPL Typ

use "filename"; 

und es lädt und kompiliert Ihre Definitionen.

Ein Trick, den ich manchmal verwende, ist das folgende. Auf der Spitze meiner Dateien habe ich einen Kommentar wie folgt aus:

(* val _ = (use "C:/Programs/sets.sml", OS.Process.system "cls");  *) 

Hier sets.sml passiert einfach eine SML-Datei, die ich auf meinem Rechner haben zu sein. Wenn ich mit der Bearbeitung der Datei fertig bin, speichere ich sie und kopiere dann das Innere des Kommentars (beginnend mit val bis zum Semikolon) in die Zwischenablage und füge es dann in eine geöffnete SML REPL ein (über das Bearbeitungsmenü für das Befehlsfenster) erscheint, wenn Sie auf das Symbol in der oberen linken Ecke des Befehlsfensters klicken). Dies lädt die Definitionen und präsentiert Ihnen eine gelöschte REPL zum Experimentieren mit Ihren Definitionen.

Notepad ++ scheint eine Syntaxdefinitionsdatei für SML zu fehlen (obwohl es eine für F # gibt, die nahe genug sein könnte). Persönlich mache ich die meisten meiner SML mit . Dies ist keine Open-Source-Lösung, sondern ist kostengünstig nagware, was in etwa mit Notepad ++ vergleichbar ist. Auf ihrer Website können Sie eine nützliche SML-Syntax-Definitionsdatei herunterladen, die Ihren Code logisch hervorhebt. Ich habe sogar ein Textpad-Werkzeug erstellt (das aus unbekannten Gründen nur sporadisch funktioniert), um die Datei automatisch zu speichern, SML zu öffnen und unter dem Dateinamen use aufzurufen.

Verwandte Themen