LINUX.ORG.RU

Декларации immutable в Сommon Lisp

 


0

2

Всем привет!

КТо-нибудь встречался с попытками прикрутить ту или иную форму декларации const к Common lisp? Я думаю, что для этого нужно лезть в потроха самого компилятора. Меня интересуют в этой связи SBCL и CCL.

В простейшем случае декларация const должна распространяться на биндинг переменной и говорить о том, что в области действия биндинга не делается setq.

Более сложный вариант - заявление о неприкосновенности полей объекта. Например, пусть мы получили параметр cons. Тогда декларируем что-то типа (declare (const (car param))) и это значит, что мы не трогаем car param и полагаем, что у нас под рукой другие его тоже не трогают. Правда, тут есть нюансы смысла (мы не трогаем, другие не трогают, никто не трогает), но не суть. Мне бы хоть что-нибудь.

А то вишь - отец всех функциональных языков без иммутабельности...

★★★★★
Ответ на: комментарий от den73

Толку от этих проверок? Они не являются обязательными и к ошибкам не приводят по дефолту.

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

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

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

Херрасе молодежь обнаглела. Это уже ни в какие ворота.

Форкнуть SBCL. Взять walker, да чего то с ним сделать.

Пионэр, sbcl это результат более __тридцати__ лет труда, включая времена cmucl и spice lisp, хакеров каких уже по пальцам пересчитать.

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

Наконец, спросим __нахрена__ весь сыр бор? Может сделать что-то стоящее? Да нет, оказывается чтобы «прикрутить ту или иную форму декларации const к Common lisp».

Браво! Получи звание мартышки года.

Форкни sbcl, я тя умоляю.

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

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

vertexua ★★★★★
()

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

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

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

Это ж лисп 1) заверни переменную в оболочку 2) выставляй геттер и сеттер 3) идентификатор переменной внутри делай жутко неудобным для использования 4) разрушай сеттер после первого присвоения (например сеттер вызывает лямбду, которая настоящий сеттер, а потом после первого вызова забывает ссылку на лямбду или редиректит на функцию с ошибкой).

Никому не советую делать такое дома, но это же лисп

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Ответ на: комментарий от den73

Судя по этой теме, анонимусам есть больше, что сказать, чем «Настоящим людям» (с) которые всерьез обсуждают подобные «идеи». Но это твой выбор :)

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

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

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

Не все равно, количество дури и так зашкаливает. Надо ее уменьшать по мере возможностей. Если мне не удастся, то да - все равно. Я пытался.

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

Да и кстати, раз уж взял ник *Elder, то сам должен все знать, и людям рассказать, а не барахтаться в racket-ах.

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

Мне нужно делать другие вещи, я бы предпочёл, чтобы данная задача уже была решена.

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

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

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

всем спасибо

Спасибо что можно идти, Хозяин

Да, решения «задачи», которую ты «поставил» как командир мы не нашли. Командир хрен знает чего. Но над нами мартышками. Очень актуальной «задачи».

Но НИКТО не знает ее решения. Наверное нам надо впасть теперь в чувство вины, и ИСКАТЬ решение.

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

... Форкни sbcl, я тя умоляю.

Просто в СБЦЛ сообществе Денискины предложения игнорят. Он бедный и несчастный :(

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