LINUX.ORG.RU

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


0

4

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

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

★★

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

твоем примере константные пределы цикла были.

Так с точки зрения трассирующего джита совершенно однохуйственно, какие они - константные или нет.

Во вторых, стандартная стратегия для циклов с неизвестными границами - это сделать один (или два) шага loop unrolling

Чего же ллвм так не сделало?

Может лет через сто они догонят сегодняшний HotSpot.

Который делает adaptive optimisation, то есть тот же трейсинг, но с ограничениями. Пиздец ты клоун.

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

Ну не знаешь ты ни хера про компиляцию, так помалкивал бы.

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

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

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

Ах, да, опять в ответ на пруфы раздались крики «заговор!111 заговор!111».

Абсолютно любой макрос будет неочевидным.

Чем макрос (define-syntax-rule (f x y) (let ([t1 x] [t2 y]) (+ t1 t2)) более неочевиден, чем ф-я (define (f x y) (let ([t1 x] [t2 y]) (+ t1 t2))?

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

Чувствуется попаболь в адрес москвичей. Мсье замкадыш?

Наверно, я не из Москвы. Последние десять лет живу в Германи и Франции. Но ты ошибаешься, я не испытываю вообще ничего по отношению к москвичам, мне в Париже нравится эстетически, деревня в Германии экономически, а сама Франция просто тем, что она Франция с её революциями, колониями, войнами и гОвнами.

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

Никакого ля-ла. Львиная доля - это простые трудяги с какой-нибудь шахты, которые во времена экономического подъёма лет тридцать-сорок назад, действительно, взяли кредит в банке, построили жильё и стали сдавать его. Сейчас они все на пенсии / в домах престарелых, а их дети получают ренту не приложив для этого никаких усилий. Кредиты - это такая вещь, которую берут всегда, и сейчас тоже, если бы экономическая ситуация сейчас позволяла, народ и сейчас так же как тридцать лет назад массово строил и строил бы, и сдавал в аренду, но сейчас кризис и так не делают. Всё это к уму отношения не имеет, просто ситуация сейчас другая.

Там не принято на публике кривиться, глядя на представителя низшего сословия.

Угу, чего и тебе желаю.

А что на самом деле про нищебродов там думают тебе не скажут

Нищеброды это чёрные в ситэ в социальном жилье, это румыны, которые сигаретами у метро торгуют, это бомжи из Польши, которые спят в метро. Это определённая прослойка в обществе которая есть и есть, чё о ней говорить-то? Только ты обзываешь нищебродами совсем не тех. Те, кто снимает жильё, нищебродом здесь не считается, человек просто снимает жильё.

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

Ты и в самом деле не в курсе, сколько платят за Java. Тебя ждет шок.

Нихрена за Java не платят. Платят технарям за ум и смекалку. А Java это или Хренава роли не играет.

Ты просто не в курсе, кого мы, «лисперы», тут троллим. Тут есть такая категория деревенщин, среди которых ходит поверье, что, мол, можно по-быстрому выучить Java + Oracle DB + Linux, и богатые пузатые дядьки мигом увезут тебя из родного колхоза прямиком в солнечную Калифорнию.

Эти несчастные переростки, попыхтев над вечно открытой на 13-ой страницей книжки по Java, ходят по ЛОРу и подбадривают друг дружку, мол «мы же не зря тут Java зубрим, не лохи же», набрасываясь на всё, что пошатывает их веру в светлое будущее.

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

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

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

Ты просто — пиздабол.

Это такой эвфемизм для слова «гуманист», да?

Это эфемизм для слова «осеннее трепло». Как наблюдатель, могу сказать: понты mv - это просто другой уровень убедительности по сравнению с твоими. Он не скрывает, как его зовут, чем он занимается, где работает, кто его начальник, и что у mv «вольво», а не «ягуары. А ты туманно вещаешь о каких-то супер-пупер-жаба -профи, которые заколачивают огромные бабки. Как было сказано в другом подобном сраче: „чтобы меряться хуями, надо как минимум не стесняться их доставать“, а ты внезапно застеснялся.

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

Он свой проектишко приводил в ответ на мой общий (и, кстати, риторический) вопрос о существовании промышленных проектов на говнолиспе. Своим ответом он только подтвердил мой тезис, за что ему искренние спасибки.

Значит, объясняю, как капитализм работает: предприимчивый человек идёт с дулей в кармане к инвесторам и получает от них небольшой кусок денег, которого хватает, в среднем, примерно на год. За год человек должен выкатить работающий прототип, чтобы инвесторы дали настоящих денег, на которых можно дотянуть до самоокупаемости. Работу делают хорошо, если по одному человеку на подсистему. Один человек на Коммон Лиспе делает больше, чем один человек на Яве, потому что Ява по сравнению с CL - жалкий ассемблер.

Если стартап взлетел, то обычно его покупает акула индустрии. Покупает ради трейдмарка, клиентов и ниши на рынке. Очень часто от оригинальных исходников не остаётся и следа, потому что у конторы есть универсальная платформа под все решения, куча прикормленных дармоедов и т.д. Переписывание происходит не из-за того, что в стартапе плохое решение приняли (какое такое плохое - они свои деньги срубили и теперь на пляже пузом кверху валяются), а потому что акуле дешевле адаптировать маленький купленный продукт под большую себя, чем большую себя под маленький продукт.

Иногда стартап вырастает в «номер 1» в своей нише и начинает рубить реальные бабки. Код с ростом фич раздувается неимоверно, и когда контору покупает акула за совсем космические деньги, то стоимость адаптации получается офигенно большой, а риски потери «номер 1» на рынке ещё выше. В таком случае акула сохраняет структуру купленной конторы, контора продолжает писать, как и раньше писала, нанимать тех людей, каких её надо, а не акуле, и т.п. Это случай с ITA.

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

Ты и в самом деле не в курсе, сколько платят за Java. Тебя ждет шок.

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

И это говорит человек с претензией на наличие мозга. Гы гы гы. Ну плати ренту, плати, вместо того, чтобы вложиться в неизбежно и непрерывно растущую недвижимость. Платить дяде ведь выгоднее, чем платить в свой собственный карман.

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

Это всего лишь очередной симптом красноглазия.

Я просто хороший инженер.

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

т.е. оно как-то само получается? :)

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

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

Emacs нормально дружит с лиспами. Может ну его, vim этот?

ты не понял - я _интерпретатор_ нормальный хочу, чтоб как в Писании: " Интерпретатор делает такое пошаговое построение программы особенно удобным" и «облегчает пошаговое написание и тестирование программ». А в редакторе я могу и на vim и на kate. К редактору у меня одна претензия: он не нужен (по Писанию).

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

проблема в том, что в императивном ЯП профит может дать только очень маленькая лямбда, которую можно безболезненно заинлайнить. Например x++ или x+y, или ещё что-то подобное. Сложная лямбда, которую заинлайнить нельзя, ИМХО профита не даст.

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

ну лямбда это и есть обычная функция. Разве не так? Просто лямбда обычна безымянная.

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

Что любопытно, в некоторых первых лисп-машинах даже намеренно отключали сборщик мусора, ибо (1) тогда он был еще неэффективен; (2) код писался так, что почти не выделял новую память; (3) могли себе позволить перезагрузить лисп-машину где-то раз в сутки.

может GC и не нужен?

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

Интерпретатор занимается, ВНЕЗАПНО, _интерпретацией_ кода.

Миша, ты SICP читал? Почитай. Потом и поговорим.

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

Какое отношение профит лямбды имеет к возможности инлайнинга?

расскажи для начала, какие лямбда даёт профиты, и я смогу ответить на этот твой вопрос.

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

Вот хороший пример: RusNekromant с его феерическим 1Сом на лиспе. Жаль, что после деанона он нас покинул, а мог бы ещё отжигать и отжигать.

Я на 146% уверен, что и сейчас отжигает, только с другим ником.

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

Ну нет у Лиспа зияющих технических недостатков.

как ты объяснишь это:

[1]> (setq x (cons 10 20))
(10 . 20)
[2]> (setf (cdr x) x)

?

(это common lisp)

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

Следовательно, тебе просто нечего ответить и ты переводишь тему и начинаешь хамить. Я тоже могу утверждать, что ты Java в глаза не видел. И?

Следовательно, я у меня реальный, боевой опыт на Лиспе есть

стрелочник хуже педераста.

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

Переход на личности (ad hominem) - свидетельство того, что у оппонента нет реальных аргументов. Слив засчитан.

Если ты выглядишь, как утка, и крякаешь, как утка, то ты - утка.

обоснуй. Не все здесь используют говноЯП с говноутиной типизацией, в которой это верно по определению.

Если не хочешь, чтобы тебя за утку считали, то не крякай хотя бы.

не все думают в абстракциях твоего говносишарпа. Переведи.

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

Ох, лол, какое определение? «Инкапсуляции в C++»? Я тебе даже больше скажу: в Лиспе можно функции с данными инкапсулировать в замыканиях, безо всяких объектных систем.

в велосипеде можно покрутить педали, и велосипед поедет. Потому любой автомобиль - говно. В нём так педали крутить нельзя.

В Си можно сделать указатель на массив указателей на функции. Ну и что? Ну и что, что «безо всяких объектных систем»?

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

Расход памяти в языках с GC - весьма эфемерное понятие. И никто еще не придумал адекватного способа измерить этот расход. Я, по крайней мере, такого способа не знаю. Если ты знаешь - поделись.

ну я знаю:

1. запускаем программу на говножабе и/или говнолиспе, наблюдаем, что на смешном N (<10K) программа падает.

2. запускаем тоже самое на сишечке - работает.

Вот только ты скажешь, что это - не показатель.

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

В Си можно сделать указатель на массив указателей на функции. Ну и что? Ну и что, что «безо всяких объектных систем»?

Замыкание - это и есть инкапсуляция. А указатель на массив функций - не инкапсуляция.

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

может GC и не нужен?

Реализации функциональных структур данных без ГЦ на порядки сложнее, чем с гц. Собственно, я даже не знаю о существовании таких реализаций с ручным управлением памяти. Все-таки слишком это сложно.

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

Миша, ты SICP читал? Почитай. Потом и поговорим.

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

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

расскажи для начала, какие лямбда даёт профиты, и я смогу ответить на этот твой вопрос.

Повышает выразительность и читабельность кода, упрощает реализацию и поддержку - в итоге экономит средства заказчика. Обычный такой профит.

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

Реализации функциональных структур данных без ГЦ на порядки сложнее, чем с гц. Собственно, я даже не знаю о существовании таких реализаций с ручным управлением памяти. Все-таки слишком это сложно.

собственно дай мне какую-нибудь структуру, и я тебя её распишу без всякого GC. Меня мало волнует, в функциональных терминах ты её опишешь, или в интеративных. Проблема в том, что реализации структур в ФП _нуждаются_ в том, что-бы компилятор убирал за ними говно, в виде мусора. При написании в императивном стиле этого _можно_ избежать (но не обязательно конечно - срать можно где угодно).

drBatty ★★
()
Ответ на: комментарий от drBatty
[1]> (setq x (cons 10 20))
(10 . 20)
[2]> (setf (cdr x) x)

Объясни, что здесь такого криминального? Как ты еще собираешься создавать циклические списки?

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

1. запускаем программу на говножабе и/или говнолиспе, наблюдаем, что на смешном N (<10K) программа падает.

С чего вдруг? Ничего не падает.

2. запускаем тоже самое на сишечке - работает.

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

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

...для написания хелловорлдов.

Он нуден не «для», а «в случае». Конкретно - в случае отсутсвия ФП. ООП - это эмуляция ФП (кривая и костыльная). Когда ФП нет - то можно пользоваться жмуляцией (на безрыбье и рак рыба), но когда ФП есть - то зачем нам эмуляция? Можно использовать удобный и эффективный оригинал.

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

Если ты понимаешь лишпы, то вот это замыкание:

(let ((x 42))
 (defun foo (y)
  (+ x y)))

(foo 1) ;43

Функция foo замыкается на переменную x. Это та самая инкапсуляция, что происходит в следующем коде на С++:

class C{
public:
 C():_x(42){}
 int foo(int y){return _x+y;}
};

C c;
c.foo(1); //43

В случае замыкания как и в C++ можно задавать различное число переменных и функций. Прямо в таком виде замыкания используются не очень часто, чаще замыкаются анонимные или локальные функции на аргументы или внутренние пременные функции.

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

Во-первых, я не Миша, а Митяй

Дмитрий - это я. А ты даже не осилил регистрацию на ЛОРе.

ньюфаг), так тчо чини детектор.

чинить таки тебе.

Во-вторых, читал

знакомые буквы нашёл?

в-третьих - интерпретатор занимается интерпретацией написанного кода. А где писать код - это уже другой разговор.

за КЭПа работаешь? Спасибо.

перепутал интерпретатор с реплом (хотя и репл не обязан предоставлять средства для редактирования программы, он должен предоставить лишь средства ввода).

что там у вас, говнолисперов, как называется - не в курсе. Просвети. Лично я просто думал, что в SICP правду написали. Там тоже врут? Тогда дай сцылку на ПРАВИЛЬНЫЙ манулал, по типу нашей K&R. Или сам напиши. А то среди вас, говнолисперов, наблюдается раскол - вы ВСЕ ПРОТИВ ВСЕХ. О стандарте вам не договорится, фактически, у каждого задрота-лиспера свой личный лисп, и никто из вас никому нах не нужен. В т.ч. и вам самим. Ибо писать что-то круче

(print "helloworld!")
на ваших говноязычках не получается.

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

собственно дай мне какую-нибудь структуру, и я тебя её распишу без всякого GC.

Да никто и не спорит, что сделаешь. Все что можно сделать на одном тьюринг-полном ЯП, можно сделать на любом другом тьюринг-полном ЯП. Другое дело, что у тебя уйдет в нцать раз больше усилий без ГЦ, чем с ГЦ. И не только в реализации - но и в использовании. Ты в результате в своей реализации напишешь тот же самый сборщик мусора. Но руками, костыльный и неэффективный.

Можешь для тренировки реализовать структуры из Окасаки.

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

О стандарте вам не договорится, фактически, у каждого задрота-лиспера свой личный лисп, и никто из вас никому нах не нужен. В т.ч. и вам самим.

Не пишу на схемах с ракетками, но CL стандартизирован. Между ClozureCl и ECL код переносится свободно.

Ибо писать что-то круче
на ваших говноязычках не получается.

Дмитрий, а чего вам вдруг так жопу-то разорвало?

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

Дмитрий - это я.

Я рад за тебя.

А ты даже не осилил регистрацию на ЛОРе.

Я сижу на лоре из-под проксей, потому что забанен. Зачем мне регистрироваться?

чинить таки тебе.

С чего вдруг? Я никого неуспешно детектировать не пытался, в отличие от тебя.

что там у вас, говнолисперов, как называется - не в курсе.

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

Просвети.

Сколько?

А то среди вас, говнолисперов, наблюдается раскол - вы ВСЕ ПРОТИВ ВСЕХ. О стандарте вам не договорится, фактически, у каждого задрота-лиспера свой личный лисп, и никто из вас никому нах не нужен.

Я не понимаю о чем ты вообще? У вас, использующих алголоподобные яп, тот же самый разброд и шатания. Начинаия с алгола, заканчивая сишкой и жабой. Ты видел хоть один стандарт на алголоподобные ЯП? Я - нет. Приведи, если знаешь.

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

Не пишу на схемах с ракетками, но CL стандартизирован. Между ClozureCl и ECL код переносится свободно.

У любого ЯП есть стандарт. Этот дебил просто не понимает, что лисп - это не язык, а _семейство_ языков. У семейства стандарта, естественно, нет.

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

Повышает выразительность и читабельность кода, упрощает реализацию и поддержку - в итоге экономит средства заказчика. Обычный такой профит.

ну это если только мы ограничены рамками ФП. К тому-же, я ещё не видел заказчика, который заказывает проект больше 100(СТА(sic!)) строчек кода, и который полезет в самую глубь кода, в поисках того, имеет-ли какой-либо функциональный объект имя, или не имеет? И если этот функциональный объект таки имя(сука!) имеет, то кодер получил лишние N центов за лишние 3 строчки, где он этот ФО таки (сцука!) и описал!

И да, поддержку лямбды только осложняют, ибо когда объект только задумывался, имя для него писать излишне, и делать его отдельной функцией тоже. Что там думать, если это скажем просто модуль типа (sqrt (+ (* x x) (* y y))) ? Думать не нужно. Совсем другое дело, если в процессе поддержки, заказчик захочет не просто модуль, а что-то более сложное? Если мы пишем на сишечке, то нам в функцию double module(double x, double y); просто надо добавить необходимый заказчику костыль, но если у нас лямбда, то вопрос становится несколько сложнее...

Впрочем, для теоретиков от говнолиспа это не интересно.

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

А что тут объяснять? В чем, собственно, претензия к этом коду?

МНЕ объяснять ничего не нужно. Объясни это СВОЕМУ говноязычку.

Напомню код:

[1]> (setq x (cons 10 20))
(10 . 20)
[2]> (setf (cdr x) x)

и объясни мне, тупому, почему этот код тупо виснет нах?

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

Объясни, что здесь такого криминального?

запусти свой общелисп и выполни эти строчки. Потом доказывай, какой у тебя крутой ЯП.

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

ну это если только мы ограничены рамками ФП.

ФП - это как раз не ограничение, а наоборот.

К тому-же, я ещё не видел заказчика, который заказывает проект больше 100(СТА(sic!)) строчек кода, и который полезет в самую глубь кода, в поисках того, имеет-ли какой-либо функциональный объект имя, или не имеет?

Не понял, при чем тут это?

И если этот функциональный объект таки имя(сука!) имеет, то кодер получил лишние N центов за лишние 3 строчки, где он этот ФО таки (сцука!) и описал!

вот именно - раз нам не платят за именование ф-й, то именовать их надо лишь тогда, когда надо программисту. А если не надо - можно не именовать. И ЯП, который не позволяет не именовать - говно.

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

Ты о чем вообще, бедняша? Объект - это не функция. Функция - не объект.

но если у нас лямбда, то вопрос становится несколько сложнее...

С чего вдруг? И где ты там вообще увидел лямбду? Я - не видел.

Впрочем, для теоретиков от говнолиспа это не интересно.

Неинтересно что? Ты пока что рассказал какието непонятные сказки о том, что вот модуль без лямбд - это хорошо, а модуль с лямбдами - почемуто плохо, и вообще заказчик не будет смотреть. Можно немного конкретики и примеров, раз уж описать то, что думаешь, ты не в состоянии (словарного запаса не хватает, видимо)?

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

и объясни мне, тупому, почему этот код тупо виснет нах?

Так он не виснет. Виснет (print (setf (cdr x) x)), а (setf (cdr x) x) - нет.

anonymous
()

Капец треду, пришёл придурок drBatty и зафлудил всё своим словесным поносом.

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

запусти свой общелисп и выполни эти строчки.

Запустил, все ок, все работает как и должно работать. ЧЯДНТ?

И, бтв:

Welcome to Racket v5.3.1.9.
> (define x (mcons 10 20))
> (set-mcdr! x x)
>
anonymous
()
Ответ на: комментарий от anonymous

1. запускаем программу на говножабе и/или говнолиспе, наблюдаем, что на смешном N (<10K) программа падает.

С чего вдруг? Ничего не падает.

ну да. Если N < 10K, и памяти 16ГБ, то не падает, падает при N < 100K. Какая нафиг разница-то?

Тогда и с ГЦ работает, потому что эффективное потребление памяти с гц и без гц совпадает.

теоретики идут клевать кал. IRL либо не совпадает, либо совпадает, если время допустимо равно бесконечности.

Другими словами, любая программа, для которой не хватит памяти с гц - для нее и без гц памяти не хватит.

из этого не следует тот факт, что программа с GC не пожрёт 100500Мб памяти, если ей не нужно больше 1. IRL мы и наблюдаем, что ЛЮБАЯ программа с GC пожирает 100500Мб памяти, а остальные программы сосут. Учитывая, что у юзера больше 1 программы с GC, то сосёт именно юзер.

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

Ой, самую интересную строку забыл добавить:

Welcome to Racket v5.3.1.9.
> (define x (mcons 10 20))
> (set-mcdr! x x)
> x
#0=(mcons 10 #0#)
>

то есть у нормальных людей и print не виснет, а чо там у общеблядей - ну на то они и общебляди, да.

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

Он нуден не «для», а «в случае». Конкретно - в случае отсутсвия ФП. ООП - это эмуляция ФП (кривая и костыльная).

тебя обманули.

но когда ФП есть - то зачем нам эмуляция?

на самом деле, ФП - это ФП, а ООП, это ООП.

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