Тип Haskell против Конструктора Данных

Я учу Хаскель изlearnyouahaskell.com, У меня проблемы с пониманием конструкторов типов и конструкторов данных. Например, я нея действительно понимаю разницу между этим:

data Car = Car { company :: String  
               , model :: String  
               , year :: Int  
               } deriving (Show) 

и это:

data Car a b c = Car { company :: a  
                     , model :: b  
                     , year :: c   
                     } deriving (Show)  

Я понимаю, что первый просто использует один конструктор (Car) для построения данных типаCar, Я неЯ действительно не понимаю второй.

Кроме того, как типы данных определены следующим образом:

data Color = Blue | Green | Red

вписаться во все это?

Из того, что я понимаю, третий пример (Color) это тип, который может быть в трех состояниях:BlueGreen или жеRed, Но это противоречит тому, как я понимаю первые два примера:Car может быть только в одном состоянии,Car, который может принимать различные параметры для построения? Если да, то как вписывается второй пример?

По сути, я ищу объяснение, которое объединяет три приведенных выше примера кода / конструкции.

Ответы на вопрос(6)

Ваш ответ на вопрос