- Что такое
k'
в лямбде?Что это представляет?
Здесь ваша карта - это просто функция, которая отображает ключ k
в Maybe v
(значение).Так что k'
является параметром в случае, если мы выполняем поиск.
Обратите внимание, что, как @ AJFarmar говорит , одинарная кавычка ('
) может использоваться как часть идентификаторатакже, в отличие от некоторых (большинства) языков, которые используют это только как часть символьного литерала.Как говорится в отчете Haskell'10 о Лексическая структура :
Идентификатор состоит из буквы, за которой следуют ноль или более букв, цифр, подчеркиваний, и одинарные кавычки .
Он часто используется, поскольку имитирует простой символ [wiki] , который используется в математике для:
В математике простое число обычно используется для генерации большего количества имен переменных для вещей, похожих на , без обращения к индексам - x ′.
Откуда оно получает свое значение?
insert
не передаст значение k'
.Мы просто создаем новую функцию, которая отображает ключ k'
на Just v
в случае, если этот ключ совпадает с ключом, который мы добавили k
, или в случае, если не удерживается, мы вызываемисходная карта (для поиска на «старой» карте).
Карта empty
представляет собой const Nothing
, что-то, что отображает все на Nothing
, так что это означает, что независимо от того, что мыищите, мы всегда будем извлекать Nothing
, что и должно делать пустая карта.
Каково условие, если k' == k
проверяет?
В случае поиска он проверяет, совпадает ли ключ, который мы ищем, с ключом пары ключ-значение(k, v)
мы только что вставили.Если это так, мы возвращаем Just v
, в противном случае мы вызываем старую карту.