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.ml
als ausführbaren Bytecode:
$ ocamlbuild prog.byte
- Kompilieren eines Interpreters
name.top
in dem Module vorgeladen sind. Zuerst erstellt man die Dateiname.mltop
und 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>