рассмотрим следующее
data Point=Point{x::Float,y::Float}
data Shape=Circle{centre::Point,radius::Float}
|Rectangle {uleft::Point,bRight::Point}
Здесь тип Shape является копроизведением двух типов Circle и Rectangle. Я могу повторно использовать типы Circle и Rectangle в другом месте. Поэтому было бы полезно сделать это вместо этого:
data Point=Point{x::Float,y::Float}
data Circle=Circle{centre::Point,radius::Float}
data Rectangle=Rectangle {uleft::Point,bRight::Point}
data Shape =Circle | Rectangle
но я получаю ошибку компиляции, когда я это делаю: Circle объявляется дважды. Какой правильный синтаксис для этого, или это невозможно?