Comments 23
Боже что это?
+14
Я походу C-зависимый)) Стиль лиспа вызывает немного отвращения)) Сори за спам…
+15
в некоторых языках такая проблема даже не стоИт, т.к. вопрос «что выбрать, коды возврата или исключения» в таком языке является низкоуровневым
Судя по всему я таки забыл лисп :). Насколько я понимаю, основная разница в использовании кодов возврата и исключений состоит в том, что при использовании кодов возврата мы тем или иным способом проверяем большинство вызовов методов (например, с помощью мекроса ENSURE()), а при использовании исключений проверки расставлены только в местах реакции на ошибки, тоесть при правильном дизайне это несколько меньше кода.
В lisp, насколько я помню, special form throw действительно передает управление на парный catch, который может быть в другом месте кода. Но ведь для кодов возврата придется использовать process-retcode-answer для каждой функции — это как бы полный аналог ENSURE? Либо я чего-то не понял, либо всемогущие синтаксические макросы лиспа тут не дают никакой разницы.
+1
Есть один вариант, когда стоит предпочесть исключения, а не коды ошибок.
Это случай возврата из нескольких вложенных функций. В этом случае протягивать коды ошибок намного более громоздко и шатко, нежели использование исключений.
Это случай возврата из нескольких вложенных функций. В этом случае протягивать коды ошибок намного более громоздко и шатко, нежели использование исключений.
+2
> Т.к. для программиста, использующего тот же «foreach»,
> нет никакой разницы, использовали ли создатели языка while или for
Если на то пошло, в имплементации while и for нет никакой разницы :-)
> нет никакой разницы, использовали ли создатели языка while или for
Если на то пошло, в имплементации while и for нет никакой разницы :-)
+2
Может стоит для жалких смертных не знакомых с макросами Clojure добавить их перевод на русский? Сдаётся мне примерно 95% прочитавших так же как и я не поняли код собственно обработки кодов и исключений.
0
Между исключениями и кодами возврата есть существенная разница: исключения позволяют выполнять нелокальные переходы управления.
0
Он не пишет паттерны снова и снова. Он просто «создает» язык, в котором может наиболее естественно, наглядно и кратко сформулировать решение поставленной перед ним задачи. Профессия становится не ремеслом, а искусством.
Наверное пару раз написав, хочется перейти к готовым решениям? Поделитесь опытом.
По теме, зачем ставить такой выбор, исключения против кодов, ведь можно совместить. На пример в эрланге стандартная практика возвращать что типа {ok, Value} или {error, Reason}: тут тебе и коды возвратов (атомы как енумы), и полезная нагрузка. Паттерн матчинг таких возвратов в случае успеха выполнит нужную логику, в случае неудачи автоматом пробросит ошибку дальше(let it crash)
0
Статья написаная ценителем лиспа для ценителей лиспа ;(
0
Знаете, у меня примерно такие же чувства возникают когда кто-то без малейшего комментария выдаёт статью с полотном на, например, C#.
Так что не нойте, а гляньте введение в синтаксис. Не вставлять же в начало каждой статьи о ЯП с хоть одним примером учебник по основам используемого в них языка.
Так что не нойте, а гляньте введение в синтаксис. Не вставлять же в начало каждой статьи о ЯП с хоть одним примером учебник по основам используемого в них языка.
+2
основы лиспа я ещё с института смутно припоминаю, могу нагуглить вспомнить, но зачем? )
по моему скромному мнению смешение в статье двух сущностей — перебор.
по моему скромному мнению смешение в статье двух сущностей — перебор.
0
Где вы две сущности нашли? Тема статьи указана в заголовке и больше ничего в ней нет. Попробуйте поискать „lisp“, „лисп“, „clojure“ в тексте. Их нет. Какой-то же язык надо было выбрать для примеров и в любом случае нашлись бы те кто его не понимает.
+1
И правильно — многие дальше своего мирка не видят. А так, глядишь, есть повод заинтересоваться.
0
Sign up to leave a comment.
Коды возврата vs исключения: взгляд с колокольни