Предыдущая страница [1] > 2 <

Автор Сообщение

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#978   2009-12-29 16:53 GMT+3 часа(ов)      
_lee
>Я бы сказал что в Lisp всё объекты представлены указателями.

Да это так. Объекты в Лиспе представлены указателями.
Но сама передача аргументов в Лиспе происходит по значению в общепринятом смысле.))
Если меня внимательно почитаете, то поймете, о чем я написал))
>(defun swap (a b)

(rotatef (symbol-value a) (symbol-value b)))



>(swap 'a 'b)

Вы совершенно правильно написали эмуляцию передачи по ссылке)) Но все равно в swap идет передача по значению)) - передаются значения форм (quote a) и (quote b). Т.е. все равно идет передача по значению, но вы как бы с легкостью эмулируете передачу по ссылке в силу мощи Лиспа в части символьных вычислений.

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#979   2009-12-29 16:55 GMT+3 часа(ов)      
Хм, кто-нибудь PCL читал?

Цитата
Все значения в Common Lisp, по крайней мере концептуально, являются ссылками на объекты. Поэтому присваивание переменной нового значения изменяет то, на какой объект ссылается переменная (то есть, куда ссылается переменная), но не оказывает никакого влияния на объект, на который переменная ссылалась ранее. Однако, если переменная содержит ссылку на изменяемый объект, вы можете использовать данную ссылку для изменения этого объекта, и это изменение будет видимо любому коду, который имеет ссылку на этот же объект.


Плюс примечание:

Цитата
В целях оптимизации определенные виды объектов, такие как целые числа, меньшие определенного размера, и знаки могут быть представлены непосредственно в памяти, другие же объекты будут представляться указателями на действительные объекты. Однако, поскольку целые числа и знаки являются неизменяемыми значениями, не имеет значения тот факт, что может существовать несколько копий "одного и того же" объекта в различных переменных. Это и является корнем различия между EQ и EQL, описанного в главе 4.

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#980   2009-12-29 16:58 GMT+3 часа(ов)      
Извините, что влезаю в дискуссию, но IMHO «проблема» у gihar заключается в том, что в его функции (cpl) (которая почему-то здесь определяется под именем 'func') используется функция (incf), которая является «структуроразрушающей». Если применить эквивалентную (в смысле внешнего вида результата) функцию
(defun cpl (-C-)
(let ((e (elt -C- 0)))
(cons
(cons (car e) (1+ (cdr e)))
(cdr -C-))))

то при вызове (cpl z) никаких изменений со значением символа z не происходит.

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#981   2009-12-29 17:37 GMT+3 часа(ов)      
archimag
я читал первый 10 глав на английском когда-то. Хочу дочитать.

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#982   2009-12-29 17:38 GMT+3 часа(ов)      
archimag
Первая цитата по смыслу правильная. С моей колокольни вроде все верно.

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#983   2009-12-29 17:40 GMT+3 часа(ов)      
А вот насчет примечания ничего сказать не могу. Видимо, конкретное размещение целых чисел и знаков на совести той или иной реализации.

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#984   2009-12-29 17:42 GMT+3 часа(ов)      
VH
«проблема» у gihar была не только в этом))
Но Вы правильно заметили.

gihar

Moderators


Статус

249 сообщений

Где: --- да вот он я? приехал уже из Катманду
Род занятий: конкретный
Возраст: 0

#985   2009-12-29 18:07 GMT+3 часа(ов)      
У каждого есть проблемы.
У кого то от большого ума ,
у кого то от недостатка оного.


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

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

Всего должно быть в меру в коде - особенно когда раскидываешься направо-налево
cons car cdr caar cadr и т.д.
Из-за таких констркций если надо будет что то переделать то придется всю структуру
программы(функции) переделывать. Да и читабельность кода падает.

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

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#987   2009-12-29 18:16 GMT+3 часа(ов)      
gihar, я поражаюсь Вашей способности рассуждать о лиспе, ничего при этом в нём не понимая, просто талант...

gihar

Moderators


Статус

249 сообщений

Где: --- да вот он я? приехал уже из Катманду
Род занятий: конкретный
Возраст: 0

#988   2009-12-29 18:33 GMT+3 часа(ов)      
archimag:
Извини , я ассемблерщик , и когда начал изучать лисп(не так давно) ,
в первую очередь интересовался конкретными реализациями вызова лисп-функций
на уровне регистров , а также устройством объектов и чисел на уровне битовых-структур. Поверь лисп функция устроена непросто , трудна для рассшифровки.
И вообще я очень стар что бы верить пустым словам. Больше верю в дизассемблер.

А потом я видел как Роджер Корман пишет свои исходники.
Единственное объяснение что они такие галимые по виду , это то что он сам
автор своего детища , и гораздо больше меня соображает в нем (это - по поводу оптимизации(или еще чего-нибудь подобного))

Лисп - лучшая игрушка которую я видел.


Хотя к теме это не относится .

Есть , есть такие макросы copy-list , copy-tree. А значит все в порядке!

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

отредактировал(а) gihar: 2009-12-29 19:55 GMT+3 часа(ов)
Это было точно последнее редактирование

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#989   2009-12-29 18:55 GMT+3 часа(ов)      
gihar
>Ни одна книга про это вам не скажет.
Вы правы и не правы. Мне кажется, что Вы просто впадаете в крайности.
>есть , есть такие макросы copy-list , copy-tree.

Ну, это можно было бы реализовать, если этого нет. Хотя приятно, когда есть готовое.

gihar

Moderators


Статус

249 сообщений

Где: --- да вот он я? приехал уже из Катманду
Род занятий: конкретный
Возраст: 0

#990   2009-12-29 19:04 GMT+3 часа(ов)      
Цитата
bach74 :
gihar
>Ни одна книга про это вам не скажет.
Вы правы и не правы. Мне кажется, что Вы просто впадаете в крайности.
>есть , есть такие макросы copy-list , copy-tree.

Ну, это можно было бы реализовать, если этого нет. Хотя приятно, когда есть готовое.



Так мы ж все люди , как нам без крайностей жить? :=))

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

bach74

Members


Статус

40 сообщений

Где: Russia Челябинск
Род занятий: программист
Возраст: 43

#991   2009-12-29 19:26 GMT+3 часа(ов)      
gihar
Да не за что. Я вообще-то тоже могу сказать всем спасибо, так как мы после дискуссии все чуточку стали опытнее)) порою в книгах дольше искать.

archimag

Members


Статус

48 сообщений

Где: Russia
Род занятий:
Возраст:

#992   2009-12-29 19:58 GMT+3 часа(ов)      
gihar, ну где там тысячи макросов то? Стандартных макросов не так уж и много, а copy-list и copy-tree это обыкновенные функции, вовсе не макросы.

gihar

Moderators


Статус

249 сообщений

Где: --- да вот он я? приехал уже из Катманду
Род занятий: конкретный
Возраст: 0

#993   2009-12-29 20:12 GMT+3 часа(ов)      
archimag:
Ты прав , их действительно гораздо меньше , как я раньше этого
не заметил?
:=))
Это было точно последнее редактирование


Онлайн :

0 пользователь(ей), 13 гость(ей) :




Реклама на сайте: