Я пытаюсь полностью понять все концепции Haskell.
Каким образом типы алгебраических данных похожи на общие типы, например, на С# и Java? И как они отличаются? Что же такое алгебраическое в них?
Я знаком с универсальной алгеброй, ее кольцами и полями, но у меня есть только смутное представление о том, как работают типы Haskell.