> 1 <

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

incredible1000

Members


Статус

4 сообщений

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

#4365   2011-05-24 17:48 GMT+3 часа(ов)      
Недавно начал изучать Practical Common Lisp. Ипользую Lispbox.
Написал несколько программ, возникли вопросы. Помогите пожалуйста.
1) Увеличивать значения исходного списка на единицу.
(format t "---------------------------------------~%")
(format t "Your new list is:")

(defun foo(lst)

(defparameter *z* NIL)

(dolist(x lst) (push (+ x 1) *z* )) (setf *z*(reverse *z*)))

(foo '(1 2 3))

Результат:
Your new list is:
(2 3 4)

Вопрос: как можно избавиться от глобальной переменной *z*? С помощью let? Не сильно разобрался как она работает.

2) Реализация функции append(Соединение двух списков), с помощью car, cdr, cons.
Тоесть Вход: список 1 - '(1 2 3) и список 2 - '(4 5 6) Выход: '(1 2 3 4 5 6)

VH

Members


Статус

289 сообщений

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

#4367   2011-05-24 19:05 GMT+3 часа(ов)      
2)
(defun F (L1 L2)
(cond
((null L2) L1)
((null L1) L2)
((cons (car L1) (F (cdr L1) L2)))))

1)
(defun F (L)
(mapcar '1+ L))

incredible1000

Members


Статус

4 сообщений

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

#4368   2011-05-24 20:19 GMT+3 часа(ов)      
Большое спасибо!
> 1 <


Онлайн :

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




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