Fehler: Verweis auf undefinierte globale 'Num'

8

Ich versuche, das Modul Num in OCaml (Bignums und große Brüche) zu verwenden. Einige Dinge scheinen zu funktionieren, andere nicht, und ich kann kein einziges vollständiges Beispiel erstellen. Zum Beispiel:

%Vor%

Darf ich ein einfaches Beispiel für die Multiplikation zweier Bignums verlangen?

Die Referenz für Num ist hier .

    
Mayer Goldberg 14.06.2015, 13:52
quelle

3 Antworten

9

Wenn der Toplevel bereits gestartet wurde, können Sie die Bibliothek dynamisch laden:

%Vor%

Eine weitere Möglichkeit (die für alle Bibliotheken von Drittanbietern funktioniert und Pfade und Abhängigkeiten für Sie verwaltet) ist die Verwendung von ocamlfind . Stellen Sie dazu

%Vor%

(oder besser gesagt in Ihre ~/.ocamlinit -Datei). Um eine Bibliothek zu laden, tun Sie einfach

%Vor%

(Wenn ocamlfind - also topfind - nicht verfügbar ist, installieren Sie es mit opam .)

Hier ist ein Beispiel der Multiplikation:

%Vor%

Die Konstruktion Num.(e) ist eine Abkürzung für let open Num in e und ermöglicht die Verwendung der Funktionen Num ohne Präfix in e . Hier ist eine Definition der Fakultät:

%Vor%

Sie können es mit

versuchen %Vor%

Wenn Sie #require verwendet haben, wird ein hübscher Drucker für Num -Werte installiert, so dass die vorherige Interaktion wie folgt aussieht:

%Vor%

was viel einfacher zu lesen ist!

    
ChriS 15.06.2015, 06:22
quelle
5

Das Modul Num wird von einer Bibliothek bereitgestellt, die standardmäßig nicht verknüpft ist. Sie müssen die Bibliothek in der Linker- oder Toplevel-Befehlszeile übergeben. Sie können Typen (zB Num.num ) und Konstruktoren (zB Num.Int ) aus dem Modul verwenden, da sie nur statische (Kompilierzeit) Informationen benötigen, aber die Verwendung von Variablen (einschließlich Funktionen, zB Num.mult_num ) dynamische Informationen benötigen ( Code), der explizit eingebunden werden muss.

Für Toplevel:

%Vor%

Um ein Programm zu kompilieren und zu verknüpfen:

%Vor%

Der Name der Bibliothek, die das Modul enthält, steht am Anfang des Kapitels über die Bibliothek im Ocaml Referenzhandbuch . Für viele von ihnen ist der Name der Bibliothek der gleiche wie der Name des einzigen Moduls, das es enthält, aber das ist eine Konvention, keine Verpflichtung. Für Bibliotheken wie nums , die mehrere Module enthalten, müssen Sie den Namen der Bibliothek nachschlagen.

    
Gilles 14.06.2015 14:11
quelle
0

Num ist eine unabhängige Bibliothek (nicht Teil der Standardbibliothek), die benötigt werden muss, bevor sie im Toplevel verwendet wird.

%Vor%     
byako 14.06.2015 14:11
quelle

Tags und Links