LINUX.ORG.RU

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


0

4

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

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

★★

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

А как тогда мне сделать тривиальный массив со скоростью доступа O(1)?

Конкретно в говносхеме - смотри говноr5rs, 6.3.5 (Vectors).

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

А. Ну это не особо отличается от итоговой проги анонимуса.

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

А про что? Как уже выше говорили, не очень ясно... Структуры данных? Нет. Алгоритмы? Нет. Принципы проектирования ПО? Нет.

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

Флойд ищет длину цикла за линейное время

Я обосновывал именно это, то есть доказывал, что «Флойд ищет длину цикла за линейное время».

если известна длина цикла, то его начало ищется за линейное время

Это тоже нужно доказать - что от места где Флойд завершается _всегда_ можно попасть в узел, причём тоже за линейное время. И тогда уже просто O(n) + O(n) = O(n), да.

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

Ну и всегда интересней получить конкретные выражения для количества итераций от n, чем просто O(n) - а то может там 100500 * n, что будет хуже чем O(n^2) ~ 1 * n * n, при всех n < 100500.

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

Так же как Илиада о троянской войне, а не об архаичном ионийском диалекте греческого языка.

SICP - один из вводных курсов о программировании вообще, только с упором на абстракции. Пока не могу выразить точнее. Схема здесь постольку по-скольку. Вполне мог бы быть и общий лисп или другой такой же мощный лисп. Вот, ML и хаскель - врядли. Их типизация мешала бы лаконичности и простоте изложения, хотя некоторые с пеной у рта готовы спорить об обратном. В общем, лисп подходит лучше всего для изложения материала SICP.

З.Ы. Вообще, я чего-то стал недолюбливать статически типизированные языки после стольких лет использования :)

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

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

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

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

Это тоже нужно доказать - что от места где Флойд завершается

А нам не надо от места, где Флойд завершится, можно и с самого начала стартануть.

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 ★★★★★
()
Ответ на: комментарий от dave

Питон бы вполне подошел.

Если бы в С++ был (опциональный) сборщик, то подошел бы даже С++ =)

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

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

psikh
()
Ответ на: комментарий от 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
()
Ответ на: комментарий от dave

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

+1. Примеры прекрасно ложатся на CL, даже моими кривыми руками. А какие-то потери быстродействия для понимания примеров не важны, и говорят исключительно о кривых руках.

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

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

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

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

что полезного из SICP может извлечь практикующий программист?

В SICP программирование рассматривается под углом, который был для меня необычен. Так что я не жалею, что прочитал, хотя к тому времени у меня было 15+ лет практики.

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

Я тоже читал. Да, интересно. Но потом я понял, что никакого профита я с этого не поимел.

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

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

4.2

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

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

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

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

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

Говно у тебя в штанах, необразованный и тупой ты лузер. Линда в C отлично работает. И в Java. И даже в Фортране.

а я написал интерпретатор BF на сишечке, и теперь у меня в сишечке BF работает. И что? Что это доказывает? Что BF полезный и нужный ЯП? Ну разве что нубов пугать...

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

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

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

Ну ты тупой. Надо быть конченным кретином, чтобы сравнивать Линду и BF.

Линда - это всего лишь API. Несколько очень удобных функций для обмена сообщениями и синхронизации процессов. Офигенно мощная и при этом очень простая модель параллелизма получается, причем независимая от языка. Одинаково хорошо работает как в Си, так и в Фортране, и в Java, и в десятке других языков. А ты тут чушь несешь про какие-то интертрепаторы. Совсем дурак, да?

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

В SICP программирование рассматривается под углом, который был для меня необычен.

Обращаться к проктологу по поводу воспалившихся гланд тоже необычно. Но зачем?

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

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

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

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

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

Обращаться к проктологу по поводу воспалившихся гланд тоже необычно. Но зачем?

Ты скажи.

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

Правда, отношение к обмену сообщениями у Линды довольно косвенное.

Ну а что это как не обмен сообщениями? Или ты хотел как в говнооккаме? В печку такие сообщения.

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

Правда, отношение к обмену сообщениями у Линды довольно косвенное.

Ну а что это как не обмен сообщениями?

У тебя, наверное, и РСУБД - обмен сообщениями.

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

У тебя, наверное, и РСУБД - обмен сообщениями.

Там синхронизации нет.

Linda, в терминологии самих авторов - это анонимный message passing. То есть, без конкретных адресатов. Но все же message passing, а никак не shared memory.

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

Там синхронизации нет.

Какая-то синхронизация есть всегда.

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

можно и с самого начала стартануть

Но параллельно тому месту в котором Флойд завершится (и + 1). То есть всё равно эта точка нужна.

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

Линда - это всего лишь API. Несколько очень удобных функций

я тебе запрещал ими пользоваться? нет. юзай на здоровье.

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