LINUX.ORG.RU

Возврат значения из замыкания


0

4

Как вы считаете, если противопоставить, какое _и почему_ в абстрактном ЯП поведение оператора return внутри замыкания более правильное/оправданное: когда return только возвращает управление из замыкания или когда return вызванный внутри замыкания приводит ещё и к возврату из контекста, откуда было вызвано замыкание?

p.s. В качестве примера второго поведения - return из Proc в Ruby.

★★

Последнее исправление: maxcom (всего исправлений: 1)
Ответ на: комментарий от dave

явно преувеличенное различие между Scheme и Common Lisp.

Что общего в семантике Scheme и Common Lisp? Если дропнуть скобочный синтаксис, то никто никогда даже упоровшись не сказал бы, что эти языки имеют нечто общее.

anonymous
()
Ответ на: комментарий от anonymous

Конфликт между схемерами и общелисперами имеет более, чем тридцатилетнюю историю, но это не отменяет того факта, что языки очень близки. Для меня большой разницы между Lisp-1 и Lisp-2 не существует. Также я не замечаю особо большой разницы в макросах, пусть одни имеют гигиену и совсем не похожи на обычный лисп. Отличия не настолько велики, чтобы быть принципиальными. Скорее, наоборот, языки очень и очень близки - они из одного семейства, но борьба за место под солнцем подчас схемеров и общелисперов делает непримиримыми врагами, что очень часто наблюдается между близкими по духу или происхождению людьми, группами или целыми народами.

З.Ы. Есть интересная публикация The evolution of Lisp.

dave ★★★★★
()
Ответ на: комментарий от dave

Конфликт между схемерами и общелисперами имеет более, чем тридцатилетнюю историю, но это не отменяет того факта, что языки очень близки.

Можно конкретно - что близкого кроме синтаксиса?

Отличия не настолько велики, чтобы быть принципиальными.

Так речь не об отличиях, речь о том, что отсутствует общее. Попробуй перечислить, что _общего_ между CL и Scheme и убедишься, что не больше, чем у CL и того же питона. А скорее даже меньше.

они из одного семейства

Лисп как семейство определяется скобочным синтаксисом. Скобочный синтаксис - значит лисп, другой синтаксис - не лисп. Так что понятно, что принадлежность к семейству лиспов не делает языки хоть сколько-нибудь близкими семантически.

anonymous
()
Ответ на: комментарий от dave

Также я не замечаю особо большой разницы в макросах, пусть одни имеют гигиену и совсем не похожи на обычный лисп.

Макросы CL ближе к макросам сишки, чем к макросам схемки. Сишка - это такой лисп, видимо?

anonymous
()
Ответ на: комментарий от anonymous

Не хочу я с тобой спорить. Дюже не люблю я споры. А общего много. В свое время изучал один из стандартов Scheme, выбирая между нею и общелиспом. Короче, обсуждать не стану. Сделаю лишь одно замечание.

В CL даже есть аналог call/cc. Реализовано в системе cl-cont. Почти как в Scheme, но в ней, конечно, продолжения много круче. Причем в CL есть ограничение: не умеет обрабатывать unwind-protect, но я думаю, что это из-за сложной модели рестартов CL. Во всяком случае, блоки try-with (try-catch) в том же F# обрабатываются через введение дополнительного продолжения. Без рестартов можно было бы и unwind-protect обработать. Но это детали. Особенности. Не родовые и не принципиальные для обычного программирования.

dave ★★★★★
()
Ответ на: комментарий от anonymous

Что общего в семантике Scheme и Common Lisp? Если дропнуть скобочный синтаксис, то никто никогда даже упоровшись не сказал бы, что эти языки имеют нечто общее.

А говнолямбды? А отсутствие statement-ов?

psikh
()
Ответ на: комментарий от psikh

А отсутствие statement-ов?

Это синтаксис.

А говнолямбды?

Говнолямбды есть в стольких ЯП, что заебешься перечислять.

anonymous
()
Ответ на: комментарий от psikh

Так оно все есть даже в упомянутом в стартовом сообщении Ruby=)

anonymous
()
Ответ на: комментарий от dave

В CL даже есть аналог call/cc.

Нету.

Реализовано в системе cl-cont.

Вот именно. В стандарте языка его нету. Реализовать можно что угодно на чем угодно, если сравниваем ЯП - то сравниваем стандарты.

И окажется что общего между общелиспом и схемой кроме синтаксиса - ГЦ, лямбды, динамичность. То есть не меньше чем с каким-нибудь питоном или рубями.

anonymous
()
Ответ на: комментарий от anonymous

Это синтаксис.

Ни хера. Это семантика. Так же как и убогая динамическая типизация это тоже семантика.

Говнолямбды есть в стольких ЯП, что заебешься перечислять.

В сочетании с отсутствием statement-ов - только в говнофункциональщине, а она вся родственна говнолиспу.

psikh
()
Ответ на: комментарий от psikh

Haskellюги с тобой не согласятся-)

Когда ты говоришь о языках программирования и их адептах, нужно следовать принципу религиоведения - нужно говорить о религии так, чтобы ее представители с тобой соглашались. Иначе ты несешь антинаучную ересь. И тут так же.

anonymous
()
Ответ на: комментарий от anonymous

Ни одного курса по истории религий не видел, который писался бы с оглядкой на чувства всех описываемых верующих.

Да и если сравнивать языки с религиями, то функциональщики по уровню развития где-то рядом с каннибалами Новой Гвинеи. Ни в одном учебнике никто о чувствах язычников не волнуется.

psikh
()
Ответ на: комментарий от psikh

Дело не в чувствах. На чувства плевать как раз, да.

Речь о том, что когда ты говоришь, что вот <адепты-такой-то-веры> считают <так-то-и-так-то>, то они сами должны с тобой согласиться, иначе ты хреново проанализировал их культ.

А вот дальше ты уже можешь сравнивать эти верования с другими, выставляя оценки и пр. И тут уже плевать, согласны с тобой представители культа или нет.

anonymous
()
Ответ на: комментарий от anonymous

Да мне плевать, что неправильные верующие про свою неверную, устаревшую религию думают. Есть же официальная точка зрения антропологов, которые этих дикарей изучают.

psikh
()
Ответ на: комментарий от psikh

Именно. Но это точка зрения состоит(упрощенно) из двух частей - описательной и оценочной. Вот с описательной «дикари» должны быть согласны(иначе это описание неверно). А вот оценочная - точка зрения данной научной школы или лично какого-то ученого, и тут уже плевать, как к ней относятся «дикари».

Ты можешь сколь угодно критиковать те или иные подходы к программированию, но ты не должен эти подходы перевирать=)

anonymous
()
Ответ на: комментарий от psikh

Да и если сравнивать языки с религиями, то функциональщики по уровню развития где-то рядом с каннибалами Новой Гвинеи.

4.2

Это индейцы майя, которых уже нет, но на чей календарь до сих пор фапают.

На самом деле, ФП нужно было для того, что-бы компиляторы были попроще, ибо какой-нить boost и даже STL будет компиллится на компах 50 летней давности годами. Вот и использовали примитивный и тупой ЯП, из которого всё сознательно выкинули, и оставили одни только функции. Правда за 50 лет успели нагородить 100500 костылей, которых никто не понимает. В итоге, сегодня LISP стал сложнее и тормознее сишки, и накой оно такое надо - мне не ясно. Ради лузлов что-ли...

drBatty ★★
()
Ответ на: комментарий от anonymous

Эти дикари даже в педивикии сами про себя написали, что какашкель - наследник говносхемы и говнолиспа.

psikh
()
Ответ на: комментарий от drBatty

Да какая хер разница - майя тоже были язычниками и тоже были каннибалами.

psikh
()
Ответ на: комментарий от drBatty

Фапают на них только идиоты.

Они там по 100500 человеческих жертвоприношений за один праздник могли устроить...

Еще удивляются почему к этим укуренным гадам европейцы так относились...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.