> 1 <

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

leest

Members


Статус

12 сообщений

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

#1925   2010-05-03 00:13 GMT+3 часа(ов)      
здравствуйте, уважаемые программисты! Я опять появился тут с вопросом. Меня интересует следующее: есть функция assoc, все из того же примера риммских цифр (для тех, кто видел и помог мне в решение), как она работает и что делает я понимаю. Я хочу переделать ее без этой функции, возможно ли вообще это, и если да, то как? пробовал применять setq, но что-то не выходит, то ли неправильно делаю что-то... Заранее спасибо!

Михаил

Members


Статус

120 сообщений

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

#1928   2010-05-03 00:46 GMT+3 часа(ов)      
>Я хочу переделать ее без этой функции, возможно
>ли вообще это, и если да, то как?
Напишите свой assoc, ведь Вы же говорите, что "как она работает и что делает я понимаю".

ander-skirnir

Members


Статус

227 сообщений
http://lisper.ru
Где: Ukraine
Род занятий: `'`,`',`',
Возраст: 29

#1941   2010-05-03 21:34 GMT+3 часа(ов)      
> Я хочу переделать ее без этой функции, возможно ли вообще это, и если да, то как?

(defmacro assoc (key alist)
`(loop for cons in ,alist
if (eql (car cons) ,key)
do (return cons)))


Тогда все assoc'и раскроются в loop'ы. Это можно, это легко, но это не нужно.

leest

Members


Статус

12 сообщений

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

#1977   2010-05-06 19:04 GMT+3 часа(ов)      
спасибо большое, а способ написания на xLisp'e отличается от предложенного вами? что-то опять просидел, так и не смог написать свою assoc(

VH

Members


Статус

289 сообщений

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

#1978   2010-05-06 19:15 GMT+3 часа(ов)      
(defun ASSOC (key alist)
(cond
((null alist) nil)
((equal key (caar alist)) (car alist))
(T (ASSOC key (cdr alist)))))
> 1 <


Онлайн :

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