это тот случай, когда я могу выполнять поиск / вставку только внутри монады ввода-вывода?
Да
Я действительно спотыкаюсь о работе с Hashtables, потому что не могу
получить значения из монады IO. Это вообще возможно?
Количество
Чистые значения неизменны. Этот Hashtable, как и большинство хеш-таблиц, является mutable контейнером. Это означает, что ваша программа может использовать Hashtable, только внимательно следя за порядком выполнения всех команд. Чтобы быть полезным при управлении порядком выполнения, язык Haskell предоставляет монады IO (или ST) и синтаксический сахар (запись «do») для написания вашего кода.
Чтение и запись в Hashtable являются обеими командами выполнения и не используют чистый синтаксис привязки «let». Таким образом, при чтении из HashTable обычно используется "<-" в нотации "do", как в примере с vivian. </p>
Примечание: Использование Data.Map.Map позволит вам иметь что-то, что также позволяет вставлять и искать, но чисто.