rozważyć następująceJaka jest składnia współproduktu (rozłącznego połączenia) typów w Haskell?
data Point=Point{x::Float,y::Float}
data Shape=Circle{centre::Point,radius::Float}
|Rectangle {uleft::Point,bRight::Point}
Tutaj typ kształt jest współprodukt dwóch rodzajów Circle i Rectangle. Mogę ponownie użyć typów Circle i Rectangle w innym miejscu. Więc byłoby to przydatne zamiast tego:
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
ale pojawia się błąd kompilacji, gdy robię to: okrąg jest zadeklarowany dwa razy. Jaka jest prawidłowa składnia przy próbie tego, lub nie jest to możliwe?
Spójrz: http://calculist.blogspot.com.au/2008/02/true-unions.html – CMCDragonkai