Ich bin ein Neuling in Haskell. Hier ist ein einfacher Code:Warum kann ghci nicht exportierte Typen und Konstruktoren anzeigen? Wie kann ich es reparieren?
module Src
( -- The 'Answer' type isn't exported
Shape(Circle), -- i.e 'Rectangle' data constructor isn't exported
Point(..),
area,
nudge
) where
data Answer = Yes | No deriving (Show)
data Point = Point Float Float deriving (Show)
data Shape = Circle Point Float | Rectangle Point Point
deriving (Show)
area :: Shape -> Float
area (Circle _ r) = pi * r^2
area (Rectangle (Point x1 y1) (Point x2 y2)) = (abs $ x2 - x1) * (abs $ y2 - y1)
nudge::Shape->Float->Float->Shape
nudge (Rectangle(Point x1 y1)(Point x2 y2)) dx dy = Rectangle
(Point (x1 + dx) (y1 + dy)) (Point (x2 + dx) (y2 + dy))
nudge (Circle (Point x y) r) dx dy = Circle (Point(x + dx) (y + dy)) r
ich versteckt habe den Answer
Typen und den Rectangle
Konstruktor. Aber wenn ich die Src.hs Datei laden, sieht GHCI sie noch:
ghci> :l src
[1 of 1] Compiling Src (src.hs, interpreted)
Ok, modules loaded: Src.
ghci> let a = Yes
ghci> a
Yes
ghci> :t a
a :: Answer
ghci> let r = Rectangle (Point 0 0) (Point 100 100)
ghci> r
Rectangle (Point 0.0 0.0) (Point 100.0 100.0)
ghci> :t r
r :: Shape
ghci>
Warum ist das passiert und wie kann ich es beheben?
Sie‘ Versteckte Dinge von Dingen, die das Modul importieren, aber Sie können eine Datei nicht vor sich selbst verstecken! –