У меня есть структура 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-связанная причуда, которую мне не хватает?