2016-09-05 2 views
2

Ich habe eine Bibliothek und ich möchte meine ausführbare Datei so ziemlich sein, was ich bekomme, wenn ich cabal repl es, dh ich möchte der Benutzer Haskell Ausdrücke verwenden, und importieren Sie die Module und verwenden Sie die Datentypen, die in meinem definiert sind Bibliothek.Ist es möglich, kompilierten Code als Hinweis zu laden?

Ist es möglich? Ich habe die Idee, dass hint kann nur mit Quelldateien arbeiten (die für den Benutzer nicht verfügbar sind), aber ich bin mir nicht sicher. Als ich versuchte, Module aus meiner Bibliothek oder aus Cabal-Paketen, die global installiert sind, zu laden, bekam ich eine vage Fehlermeldung, dass das Modul ein Paketmodul sei. Tatsächlich wird fast alles, was ich schreibe, auch das tun:

ghci> runInterpreter $ loadModules ["Not.A.Package.Module"] 
Left (WontCompile [GhcError {errMsg = "<no location info>: error:\n module \8216Not.A.Package.Module\8217 is a package module"}]) 

Gibt es eine Möglichkeit, dies zu tun? (P.S. Ich verwende GHC 8.0.1 und plugins unterstützt es nicht, und ich habe auch die Idee, dass es ein sehr totes Projekt ist. Wenn es einen anderen Weg gibt, aber hint & plugins bin ich offen dafür).

+0

Kann GHCi sich diese Module importieren? –

Antwort

0

Sie könnten sich selbst einen Stapel Projekt erstellen und Ihren Code, auf dem Sie von Hackage abhängen.

Dann in Ihrem Projekt fügen Sie dieses Paket in Ihre build-depends Abschnitt der Datei *.cabal. Dann importieren Sie einfach die Sachen, die Sie benötigen, mit setImportsQ von hint.

Ein Beispiel wäre, je nach Chart und Chart-diagrams:

build-depends:  base 
        ... 
        , Chart 
        , Chart-diagrams 

Und dann in der Bewertungsfunktion:

setImportsQ[ ("Prelude",Nothing) 
      , ("Graphics.Rendering.Chart.Easy", Nothing) 
      , ("Graphics.Rendering.Chart.Backend.Diagrams", Nothing) 
      ] 
Verwandte Themen