Было бы клево переписать это так, чтобы fromList ушел. Тобишь через что-то foldM подобное.