LINUX.ORG.RU

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


0

4

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

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

★★

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

Мутабельные состояния только в твоей голове.

В самолёт загрузили 100 тонн мяса. Самолёт остался тем же, нового самолёта не создалось.
Маша купила в магазине мясо, принесла домой и пожарила. Мясо осталось тем же, нового мяса не создалось.
Вася покрасил холодильник в чёрный цвет. Холодильник остался тем же, нового холодильника не создалось.
Мойша снял со счёта 1000 шекелей. Счёт остался тем же, нового счёта не создалось.

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

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

В самолёт загрузили 100 тонн мяса. Самолёт остался тем же, нового самолёта не создалось

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

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

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

Вася покрасил холодильник в чёрный цвет.

пришла мама и заставила гота Васю вернуть все как было. Куда вы дели информацию о предыдущем цвете холодильника?

Мойша снял со счёта 1000 шекелей. Счёт остался тем же, нового счёта не создалось.

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

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

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

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

Или, может, все-таки дописываем новые строчки в ту же накладную, а?

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

Или, может, все-таки дописываем новые строчки в ту же накладную, а?

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

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

Но ведь сам объект «накладная», получается, мутабелен. И, более того, имеет состояния: сбор груза / погрузка / отправка / в пути / приземлился / разбор груза / таможня / доставлен.

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

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

Но ведь сам объект «накладная», получается, мутабелен.

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

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

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

А каждый раз, когда я добавляю продукты в холодильник — это новый холодильник, просто часть его — старая, лол.

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

А каждый раз, когда я добавляю продукты в холодильник — это новый холодильник, просто часть его — старая, лол.

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

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

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

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

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

Еще можно(если время есть) посмотреть на акторный пролог. Клевая штука. Вот такая мутабельность, как там - меня вполне устраивает.

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

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

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

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

Программировать, как правило, проще с иммутабельностью

Сколько бы раз ты не повторил эту идиотскую мантру, никто тебе не поверит.

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