экспорт из модуля

Вот код, взятый из 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)

15
задан R71 24 January 2012 в 08:25
поделиться