MakeCircle
- это конструктор данных для типа CircleInstance
.Конструкторы данных могут быть экспортированы только в сочетании с их определяющим типом.Возможно, вы также захотите экспортировать методы класса Circle
getRadius
и setRadius
;с текущим списком экспорта эти методы будут недоступны за пределами этого модуля.
Измените список экспорта на
module Circle (Circle (..), CircleInstance (MakeCircle), getRadius, setRadius)
Это показывает две формы экспорта.Экспорт Circle (..)
экспортирует класс типов Circle
и все его методы, тогда как CircleInstance (MakeCircle)
экспортирует конструктор типов CircleInstance
и только его конструктор данных MakeCircle
.Если вы добавите новый конструктор данных для MakeCircle, возможно, UnitCircle
, этот конструктор не будет экспортирован из модуля, если вы не упомянете его в списке экспорта (например, CircleInstance (MakeCircle, UnitCircle)
) или не используете форму (..)
экспорта.