Оба в порядке, но помнят, что иногда доступ к Итератору непосредственно полезен (такой, как будто Вы удаляете элементы, которые соответствуют определенному условию - Вы получите ConcurrentModificationException, если Вы сделаете collection.remove (o) в для (T o: набор) цикл).
я предпочитаю писать для (вздор: вздор) [foreach] синтаксис почти все время, потому что это кажется более естественно читаемым мне. Понятие итераторов в целом действительно не имеет параллелей за пределами программирования
Для этого можно использовать Text.ParserCombinators.Parsec.Prim.unexpected
и Control.Monad.fail
. Оба принимают аргумент String
, обозначающий сообщение об ошибке, и возвращают (в данном случае) значение типа GenParser tok st a
.
Подробнее см. Text. ParserCombinators.Parsec.Error
, в частности Сообщение
. Здесь вы можете прочитать, какую функцию использовать в каком случае (хотя обе означают ошибку синтаксического анализа, они семантически немного отличаются).