en | de

Funktionale Programmierung

Bachelorstudium

VO2 + PS1  WS 2009/2010  703017 + 703018

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 Datei name.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 Beispiel w03.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>