> 1 <

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

Emilia

Members


Статус

1 сообщений

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

#7794   2017-11-06 00:55 GMT+3 часа(ов)      
Я новичок в Lisp. Не могу c помощью функций remove получить изменённый список( такая же фигня и с функцией subst...он оставляет cписок так как есть...скажите что я делаю не так?

(setf *satz* '(Ich kaufe heute abend im Supermarkt frisches Obst und Gemuse))
->(ICH KAUFE HEUTE ABEND IM SUPERMARKT FRISCHES OBST UND GEMUSE)

(remove 6 *satz*)
->(ICH KAUFE HEUTE ABEND IM SUPERMARKT FRISCHES OBST UND GEMUSE)

skelter

Members


Статус

40 сообщений

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

#7795   2017-11-06 06:02 GMT+3 часа(ов)      
Документацию невнимательно читаете. Первый элемент remove не номер, а сам элемент, который надо удалить. На всякий случай: remove ничего не делает с переданным ему списоком, а создаёт новый с теми же элементами, кроме удаляемого. Например,
(remove 1 '(1 2 1 2 3 1 1)) ==> (2 2 3)


Как ни странно, функции, удаляющей элемент по номеру, в стандарте нет. Можно скомбинировать butlast и nthcdr.

_sg

Members


Статус

37 сообщений

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

#7807   2017-11-27 13:09 GMT+3 часа(ов)      
как вариант:

(defun re (n w)
(remove-if #'identity w :start n :end (1+ n)))

> (re 3 '(0 1 2 3 4 5))
(0 1 2 4 5)
> 1 <


Онлайн :

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




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