Я прочитал некоторое объяснение типов алгебраических данных:
- Алгебра алгебраических типов данных I
- Алгебра алгебраических типов данных II
- Алгебра алгебраических типов данных III
- Алгебра данных и исчисление мутаций
В этих статьях приведены подробные описания и примеры кода.
Сначала я думал, что Algebraic Data Type предназначен только для простого определения некоторых типов, и мы можем сопоставить их с сопоставлением с образцом. Но после прочтения этих статей я обнаружил, что "сопоставление с образцом" даже не упоминается там, и контент выглядит интересным, но гораздо более сложным, чем я ожидал.
Итак, у меня есть некоторые вопросы (на которые в этих статьях не отвечают):
- Зачем нам это нужно, скажем, в Haskell или Scala?
- Что мы можем сделать, если у нас есть это, и что мы не сможем сделать, если у нас его нет?