Fundamentals of the Icon programming language
Когда в твоих руках Icon, решение любой задачи похоже на перебор. На странице 78 примеры.
Так как в серьёзных приложениях требуется журналирование ошибок, молчаливая неудача, которая может может возникать и отсекать ветку перебора сразу в нескольких местах, например, по признакам выхода за границы диапазона, наличию элемента в ассоциативном массиве или любом логическом условии, которое можно проверить только после того, как предшествующие проблемы были исключены, уже не годится. Приходится обильно разбавлять всё понятными сообщениями, и магия коротких ёмких выражений улетучивается. Вот если бы как–нибудь добавить к неудачам метаинформацию, как у исключений, что–нибудь и вышло.
Когда в твоих руках Icon, решение любой задачи похоже на перебор. На странице 78 примеры.
every write(!"ab", !"+-", !"cd"); # Примерно по такой методе я тесты на несколько мегабайт генерилПо сравнению с Prolog, даже такими диалектами, как Mercury, с нормальным синтаксисом функций, Icon — наиболее удобный язык программирования с откатами.
(0 to 20 by 2) = (0 to 20 by 3) # Экология? Нет, не слышал.
Так как в серьёзных приложениях требуется журналирование ошибок, молчаливая неудача, которая может может возникать и отсекать ветку перебора сразу в нескольких местах, например, по признакам выхода за границы диапазона, наличию элемента в ассоциативном массиве или любом логическом условии, которое можно проверить только после того, как предшествующие проблемы были исключены, уже не годится. Приходится обильно разбавлять всё понятными сообщениями, и магия коротких ёмких выражений улетучивается. Вот если бы как–нибудь добавить к неудачам метаинформацию, как у исключений, что–нибудь и вышло.