У меня есть длительное вычисление, которое выводит список. Я хочу выводить значения из этого списка по мере их вычисления. Какой был бы аккуратный способ сделать это?
В настоящее время я использую mapM_ print
для печати каждого значения в STDOUT. Это работает достаточно хорошо для простого случая вывода значений в командную строку, но кажется немного хакерским и сложным в работе.
Кроме того, в какой-то момент я хочу превратить вывод командной строки в интерактивную визуализацию. Как я мог превратить свой список в нечто вроде потока событий из FRP? Было бы здорово подключить это к существующей структуре графического интерфейса в качестве источника событий.
Можно переписать функцию так, чтобы она использовала не список, а что-то другое, хотя решение, позволяющее мне использовать список как есть, было бы идеальным.
mapM_
тоже хорошо с ними работает, я думаю, что решение по умолчанию вполне неплохое. Просто используйтеhFlush stdout
, чтобы убедиться, что вывод действительно очищен (например,mapM_ (hFlush stdout << print
). - person Dmytro Sirenko   schedule 06.01.2013