Häufig Gestellte Fragen
Diese Site wird mit sinnvollen Fragen aus der Vorlesung, den Übungen, sowie gesendetem Feedback, befüllt.Wie aktiviere ich Kommandozeilenhistorie und -vervollständigung für
ocaml?
Das Programm rlwrap (auf ZID Rechnern verfügbar) erfüllt
genau diesen Zweck. Entweder kann man ocaml wie folgt aufrufen:
$ rlwrap ocaml
oder folgendes Alias setzen (z.B. in .bashrc):
alias ocaml="rlwrap ocaml"
Wie rufe ich ocamlbuild auf?
Es gibt verschiedene Möglichkeiten ocamlbuild zu verwenden:
- Kompilieren der Datei
prog.mlals ausführbaren Bytecode:
$ ocamlbuild prog.byte - Kompilieren eines Interpreters
name.topin dem Module vorgeladen sind. Zuerst erstellt man die Dateiname.mltopund listet darin zeilenweise alle Module auf die geladen werden sollen. Dann
$ ocamlbuild name.top
Wie kann ich einen eigenen Interpreter konfigurieren?
Immer wenn ein Interpreter gestartet wird (egal ob ocaml
oder z.B. name.top von oben) wird überprüft ob
die Datei .ocamlinit im gegenwärtigen Verzeichnis
vorhanden ist. Falls ja, wird der Inhalt dieser Datei ausgeführt, als
würde man ihn im Interpreter eintippen. (Alternativ kann auch
über das Flag -init <file> die Datei <file>
geladen werden.)
Dies ist unter anderem nützlich um sofort nach dem Start in das
Verzeichnis _build zu wechseln (in dem ocamlbuild
standardmäßig jeglichen Output speichert). Der entsprechende
Befehl im Interpreter lautet #cd "_build";;.
Wie verwende ich die Sourcecode Archive?
Nehmen wir als Beispielw03.tgz, also das Archiv für
Woche 3. Zuerst lädt man das Archiv, z.B., mittels
$ wget http://cl-informatik.uibk.ac.at/teaching/ws09/fp/src/w03.tgz
nun entpackt man das Archiv
$ tar -xzf w03.tgz
und wechselt in das entstandene Verzeichnis w03
$ cd w03
Um einen OCaml Interpreter zu erzeugen in dem alle Module des Archivs
vorgeladen sind, verwendet man
$ ocamlbuild w03.top
Dieser Befehl liest den Inhalt der Datei w03.mltop (in der natürlich
auch eigene Module eingefügt werden können). Nun kann man mittels
$ rlwrap ./w03.top
den Interpreter laden, um dann z.B. auf die Funktion of_string aus dem Modul
Strng zuzugreifen
Objective Caml version 3.11.0
# Strng.of_string;;
- : string -> char list = <fun>