Ответ 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
- должно присутствовать одно значение и бесплатно добавлять кучу законов.