Вот код, взятый из http://www.angelfire.com/tx4/cus/shapes/haskell98.html. Он компилируется и выполняется правильно в WinGHCi, если я комментирую имена в заголовке модуля. Но если имена сохраняются, то он не компилируется - он сообщает об ошибке в имени MakeCircle. Мой вопрос: если я хочу прямо указать, что я хочу экспортировать MakeCircle, какие изменения кода необходимы?
module Circle -- (Circle, MakeCircle, getRadius, setRadius)
where
import Shape
class Shape a => Circle a where
getRadius :: a -> Int
setRadius :: a -> Int -> a
instance Shape CircleInstance where
getX = x
getY = y
setX a newx = a {x = newx}
setY a newy = a {y = newy}
moveTo a newx newy = a {x = newx, y = newy}
rMoveTo a deltax deltay = a {x = ((getX a) + deltax), y = ((getY a) + deltay)}
draw a =
putStrLn ("Drawing a Circle at:(" ++ (show (getX a)) ++ "," ++ (show (getY a)) ++
"), radius " ++ (show (getRadius a)))
instance Circle CircleInstance where
getRadius = radius
setRadius a newradius = a {radius = newradius}
data CircleInstance = MakeCircle {x, y, radius :: Int}
deriving(Eq, Show)