Erstellen und installieren Sie ein eigenes Modul

8

Ich möchte ein Modul erstellen und es in die Haskell-Bibliothek laden. Ich kann mit Ubuntu 11 oder Windows 7 mit den Tools der Haskell-Plattform arbeiten. Das ist mein Modul:

%Vor%

Ich habe auch ein Problem mit "show" in der ghci, weil ich eine Ausnahme von Stack-Überlauf bekomme.

    
optimusfrenk 21.11.2011, 09:57
quelle

1 Antwort

15

Ihre Paste ist mit dem Code unordentlich; vielleicht sollte es so aussehen: Ссылка (beachten Sie den Hinweis von hlint unten.) Die folgenden Schritte sind für eine einfache Methode der Entwicklung , aber denke ich werde die meisten relevanten Faktoren offen legen:

  • Benenne das Modul in das sinnvollere Poker.Elements um und speichere es als Elements.hs

  • Erstellen Sie ein Verzeichnis namens poker mit einem Unterverzeichnis namens Poker

  • Verschiebe Elements.hs in poker/Poker . Jetzt ist der hierarchische Name Poker.Elements sinnvoll. Ihre Verzeichnisstruktur sieht so aus:

    %Vor%
  • poker ist jetzt ordnungsgemäß organisiert. Geben Sie ghci Poker/Elements.hs von dort ein und ghci wird wissen, wie man mit anderen Poker.x.y.z -Modulen in einer komplizierteren Struktur, wie etwa dieser, umgeht:

    %Vor%

Aber unsere Idee war, die poker -Bibliothek mit dem cabal -Tool zu erstellen und zu installieren. Nichts einfacher.

  • cd in poker , wenn Sie nicht dort sind.

  • Führen Sie cabal init aus. Die Antworten werden alle offensichtlich sein. Sie erstellen eine Bibliothek, die sich auf Spiele bezieht.

  • Bearbeiten Sie Ihre neue poker.cabal -Datei - cabal init kann nicht sagen, welche Pakete Sie verwenden.
    Tatsächlich verwenden Sie nur Prelude und Data.Char , die sich in base befinden, also erweitern Sie die Zeile Build-depends so, dass sie so aussieht:

    %Vor%

    Das Ergebnis sieht folgendermaßen aus: Ссылка (Wenn Sie weitere Abhängigkeiten verpassen, wird dies mit dem nächsten Befehl angezeigt.)

  • Ihr Verzeichnis hat jetzt diese Struktur:

    %Vor%
  • Sie haben also jetzt ein cabalisiertes, baubares, in der Tat hackagefähiges Paket. Geben Sie cabal install und dann cabal clean ein. Das Tool cabal hat die Konfiguration, Kompilierung, Installation und Registrierung des Pakets verwaltet. (Standardmäßig wird die kompilierte Bibliothek im versteckten Verzeichnis $HOME/.cabal/lib/poker-0.1 oder der Entsprechung für Ihr System abgelegt.)

  • Öffnen Sie ghci von überall auf Ihrem System; Gib 'den Code ein%. Genießen. Es ist nicht anders, wenn Sie import Poker.Elements direkt aufrufen - wenn Sie beispielsweise eine ausführbare Datei mit ghc erstellen, weiß ghc jetzt, wie Sie ghc --make -O2 PokerCalculator.hs -o pokercalculator ohne weitere Anweisungen finden können.

  • Teste deine Definitionen. Reflektieren. Bund. Überdenken Sie. Testen Sie mehr. Schauen Sie in Poker.Elements .

  • Wenn Sie Ihr Modul überarbeitet haben, erstellen Sie es neu und installieren Sie es erneut mit quickcheck . Dies überschreibt die alte Installation von cabal install , wie Sie es immer noch aufrufen; aber in diesem, einfachsten, Fall werden keine anderen Pakete dagegen gebaut, so dass das Ergebnis wünschenswert ist. (Falls deine andere experimentelle Bibliothek, poker-0.1 - die im nächsten Verzeichnis ist - imports texas-holdem-0.1 , wie es wahrscheinlich ist, dann repliziere sie auch, um deine fortgeschritteneren Ideen über die Poker.Elements des Pokers zu verwenden.)

  • Wenn Sie neue Module hinzufügen oder Module aus neuen Paketen importieren, geben Sie diese in den entsprechenden Zeilen von Elements an. Wenn du es vergisst, erinnert poker.cabal dich höflich daran, dies zu tun, wenn du versuchst, es neu aufzubauen ...

  • Lade dein cabal install -Paket auf github oder patch-tag oder darcsden hoch. Wenn du es perfektioniert hast, lade es auf Hackage hoch. Beachten Sie, dass es sogar auf Github oder Patch-Tags zum "hackaged" Universum gehört. Wenn Sie Module von Hacker-Paketen auf Hackage importieren, erhalten die Leute poker oder git clone Ihr Repository, darcs get die richtigen Pakete für sie von hackage.haskell.org.

applicative 21.11.2011, 13:26
quelle

Tags und Links