У меня есть структура Data.Map
, которая отображает String
в Strings
s. По какой-то причине я хочу распечатать содержимое карты в формате key: value
с помощью foldrWithKey
, например:
M.foldrWithKey (\k v b -> putStrLn (k++": "++v++"\n")) (return ()) data
Однако на выходе появляется только первый элемент карты (хотя карта имеет более одного элемента). Но когда я пытаюсь создать список с помощью foldrWithKey
, а затем распечатаю его, все элементы появятся:
print (M.foldrWithKey (\k v b -> k:b) [] data)
Итак, почему другие элементы не появляются при попытке выполнить ввод-вывод? Так ли работает складной склад или есть какая-то тонкая ленивая io-связанная причуда, которую мне не хватает?