Ich habe drei Dateien. Die erste:Wie verwende ich einen Datentyp in einem Haskell-Paket
module AST where
data Prog a b = ...
Der zweite
module ParseProg where
import qualified AST as A
progToAST :: String -> A.Prog String String
Dieser Teil eines Pakets für eine Hausaufgabe verwendet wird. Ich installierte es mit
$ cabal configure
$ cabal build
$ cabal install
, die zu funktionieren schienen. Mein drittes Programm (Testen) ist
import ParseProg
val1 = progToAST "x"
-- prog :: A.Prog String String
fun1 :: Int -> Int
fun1 x = 2
-- val2 = fun1 val1
So funktioniert der Import. Wenn ich prog obwohl Kommentar-, erhalte ich
Not in scope: type constructor or class ‘A.Prog’
Das Gleiche gilt, wenn ich versuche, Prog oder AST.Prog. die Art der val1 nachsieht
> :type val1
> val1 :: CabParser-0.1.0.0:AST.Prog String String
Und ähnlich Auskommentierung val2
Couldn't match expected type ‘Int’
with actual type ‘CabParser-0.1.0.0:AST.Prog String String’
Kopieren CabParser-0.1 gibt .... ein Parse-Fehler gibt. Wie verwende ich den Prog-Datentyp in AST?
Sie haben in Ihrem dritten Programm nicht "importierten qualifizierten AST als A". – Ryan
Jetzt bekomme ich '" Konnte das Modul 'AST' nicht finden es ist ein verstecktes Modul im Paket'[email protected]_ ' – fhyve
Sie müssen es in Ihrer' .cabal' Datei für 'CabParser auflisten '. Ich erinnere mich nicht an den Feldnamen, aber' ParseProg 'wird darin bereits aufgeführt. – Ryan