I am new to Haskell. Here is a simple code:
module Src ( -- The 'Answer' type isn't exported Shape(Circle), -- ie '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 xy) r) dx dy = Circle (Point(x + dx) (y + dy)) r
I hid the Answer type and the Rectangle constructor. But when I download the Src.hs file, ghci still sees them:
ghci> :l src [1 of 1] Compiling Src ( src.hs, interpreted ) Ok, modules loaded: Src. ghci> let a = Yes ghci> a Yes ghci> :ta 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> :tr r :: Shape ghci>
Why did this happen and how can I fix it?
haskell ghci
Andrey Bushman
source share