Я столкнулся с той же проблемой, что и вы. К счастью, после того, как googling выполнил жесткие шаги на этой странице , SSL работает с моим HttpListener.
Ух ты, похоже, ты в замешательстве. Это понятно, так как слово «карта» означает как минимум четыре разные вещи!
Data.Map
(вам, кажется, ясно об этом) Map.Map k v
(в модуле Data.Map
), который является конечным отображением, он же «словарь», он же «хеш-таблица» (но не использует хеширование) Map.map
(в модуле Data.Map
), которая применяет функцию к каждому значению в Map
(словарь) map
(в [ 1111]), который работает со списками и не имеет ничего общего с Map
s (словарями). Вот так, что за глоток!
Вот некоторые объяснения сигнатур:
Map.fromList :: (Ord k) => [(k, a)] -> Map.Map k a
Map.Map k a
- параметризованный тип данных с двумя параметрами, [ 1114] и a
. Если вы знакомы с дженериками в семействе C ++, это может быть написано Map<K, A>
.
Функция fromList
принимает список пар (ключ, значение), [(k, a)]
и возвращает словарь. Ключи словаря имеют тип k
, а значения имеют тип a
. (Ord k)
означает, что ключи должны быть упорядочены по отношению друг к другу, поскольку они хранят структуру данных в виде отсортированного сбалансированного дерева.
-- A dictionary from people's names to their age
ages :: Map.Map String Int
ages = Map.fromList [("Bill", 32), ("Carol", 71), ("Diddy", 13)]
Map.map :: (a -> b) -> Map.Map k a -> Map.Map k b
Это принимает функцию от вещей типа a
к вещам типа b
в качестве первого параметра. В качестве второго параметра он принимает словарь из любого типа ключа k
для вещей типа a
и применяет функцию к каждому значению в словаре, возвращая словарь из того же типа ключа для вещей типа b
].
-- A dictionary from people's names to whether they are allowed to drink alcohol
canDrink :: Map.Map String Bool
canDrink = Map.map (\age -> age >= 21) ages
fromList'
- это просто пользовательская реализация fromList
, реализованная путем многократной вставки. Неудивительно, что он имеет ту же сигнатуру, что и fromList
(но переменные типа называются по-разному - это не имеет значения).