2011-01-15 7 views
2

wieder insgesamt Neuling Frage von mir über Haskell und Leskah.organisieren ein Haskell-Paket zwischen mehreren Dateien

(Erstens, ein subjektives Kompliment für Haskell-Liebhaber: bei jedem kommt wieder für eine Lerneinheit von Haskell ich mag es mehr und mehr. Ich hoffe, das wird lange dauern :-). Das neueste Vergnügen war Leskahs Zucker für die automatische Umwandlung von Symbolen in Mathe. Es macht Code wirklich gut. Aber gut das ist nicht der Punkt ...)

Ich wollte mein Lernpaket in mehrere Dateien organisieren. Es ist mir jedoch nicht gelungen, eine zweite Datei hinzuzufügen, z. Second.hs, die andere Definitionen enthalten, zu meiner aktuellen Paketbaueinheit. Ich habe es in Leskah/Paket bearbeiten/Zusätzliche Dateien hinzugefügt. Aber das scheint nicht den Job zu machen. Mehr als ich fühlte, wie es war ein bisschen akward, um jede neue Datei auf diese Weise hinzuzufügen (durch Leskah/Paket bearbeiten/Extra-Dateien).

Jedenfalls ist alles, was gebaut wird, nur der Inhalt meiner Main.hs. Ich vermisse sicher einen Punkt?!

Eine andere Frage ist, in C++ verwende ich stark namespace, um meine Objektdefinitionen nach Thema/Ziel zu sortieren. Was entspricht dem Namensraum in Haskell? Ein Modul? Ein Packet ?

Antwort

3

In Bezug auf leksah: Sie können neue Module über den Browser-Bereich hinzufügen. Klicken Sie mit der rechten Maustaste und wählen Sie "Add module" aus dem Kontextmenü (Hinweis: Geben Sie den Modulnamen, aber keinen Dateinamen im Dialogfeld ein). Das Hinzufügen von Modulen aus dem Paket-Editor wurde entwickelt, um ein vorhandenes Modul zur Cabal-Datei hinzuzufügen. (Wenn Sie nicht wissen, was "Cabal" bedeutet, dann ist es eine gute Zeit, es zu googeln :))

In Bezug auf Namespace. Ich denke, das nächste Äquivalent ist Modul. Sie können das Modul einfach importieren, um dem aktuellen Kontext Definitionen hinzuzufügen. Alternativ können Sie das Modul qualifiziert importieren. In diesem Fall müssen Sie die Definitionen aus dem Modul qualifizieren. Außerdem können Sie den Modulnamen beim Importieren "aliasieren".

import Module1 
import qualified Modile2 
import Module3 as M3 
import qualified Modile4 as M4 

Das Paket entspricht der kompilierten Bibliothek in C/C++.

+0

Lachen Sie nicht über mich, es brauchte Zeit, um das gute Kontextmenu zu finden. Ich habe die Funktion "Modul hinzufügen" ausprobiert ... und es ist genau das, wonach ich gesucht habe. Danke. –

+0

Nur eine Bemerkung, ich habe die Implementierung von ".cabal" -Datei betrachtet, aber für mich ist es jetzt ein bisschen zu viel Konfiguration/Verwaltung Zeug. Ich werde es mir nochmal anschauen, wenn ich die Pakete ein wenig weiter verstehen will. –

Verwandte Themen