Что такое "словарные типы" и сколько существует?

Во всех языках программирования я встречал похожие составные типы с разными именами:

Люди часто используют термин словарный запас,
но я никогда не видел определения того, что делает тип "лексики".

Имеет ли этот термин свободное определение?
Что говорит теория типов и другие языки программирования о типах словарей?

Является ли все выше типа словарного запаса? Есть ли еще?

Ответ 1

Мое понимание словаря по отношению к программированию и типу словаря в целом - это то, что дает определенные свойства объектов с четко определенным значением.

Вот несколько примеров в Haskell:

Рассмотрим тип Optional/Maybe и чистую функцию, которая принимает HTTP-ответ веб-сервера и извлекает код ответа.

getCode :: String -> Int

Теперь предположим, что к тому времени, когда мы запустим эту функцию, мы не знаем, был ли ответ успешным или нет - код может вообще отсутствовать. Как мы представляем случай, когда код отсутствует? Мы можем назначить какое-то искусственное значение -1 или 0 или мы можем изменить для него весь тип функции:

getCode :: String -> Maybe Int

Кроме того, Maybe формирует a Monad, Functor, Applicative, Foldable и множество других типов в Haskell. Каждый typeclass добавляет дополнительные возможности для манипулирования рассматриваемой ценностью, соблюдая при этом присутствие/отсутствие.

Product/Sum Тип в Haskell представлены как пары и Either a b. Опять же - определение чего-либо с помощью Product или Sum добавляет четко определенный смысл Product a b - оба значения должны присутствовать, Sum a b - должно присутствовать одно значение и бесплатно добавлять кучу законов.