![]() |
|
![]() ![]() ![]() |
|
sw04 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 22.1.2007 Где: Ufa Репутация: нет Всего: 18 |
в упор не хочет заменить x на n :( башка уже трещит -------------------- <удалено администрацией> |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
как там функция проверки, является ли аргумент списком? listp?
тогда вроде такого:
правда, может, тебе как раз с побочными эффектами функция нужна, а не "чистая"... Добавлено через 1 минуту и 32 секунды естественно, куча проверок напрямую к функциональности кода не относится... |
|||
|
||||
VH_ |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
|
||||
|
|||||
Eduard1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
А как можно рекурсивно заменить N-ый элемент в списке (указав номер заменяемого элемента)?
Имеется список lst (setq lst '(S L O V O)) переменные: X - новый символ N - номер элемента (defun Replace (X N lst) (cond ( (null lst) nil) ..... ..... ..... ) ) В итоге должно получиться: > (Replace 'A 5 lst) (S L O V A) |
|||
|
||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
|
|||
|
||||
k0rvin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: нет Всего: 5 |
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||
|
|||||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
>k0rvin
Задание: «...рекурсивно заменить элемент в списке...» |
|||
|
||||
k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: нет Всего: 5 |
а, т.е. полностью свой велосипед, даже без map'а? =) ну тогда
Это сообщение отредактировал(а) k0rvin - 24.1.2010, 20:32 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Хювёнен-Сеппянен "Мир Лиспа" т.1 стр.205:
«Функция является рекурсивной, если в её определении содержится вызов самой этой функции.» |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: нет Всего: 5 |
ну так rec у меня вполне рекурсивна =) да и книжка мне эта не очень понравилась, "On Lisp" и "PCL" интересней =) Это сообщение отредактировал(а) k0rvin - 24.1.2010, 22:18 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
luser78 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.1.2010 Репутация: нет Всего: нет |
Вот правильный код :
|
|||
|
||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
>k0rvin
Попробуйте вызвать Вашу функцию (rec) за пределами Вашей функции (replace2). Результат соблаговолите сообщить. >luser78 Ваша функция (rem) работоспособна, но для каждого элемента исходного списка, равного «новому» значению, выполняет лишний вызов самой себя. И чем больше подходящих для замены элементов, тем больше лишних вызовов. Разработчикам таких функций привет. |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: нет Всего: 5 |
я и без запуска могу сказать, что будет =) только не вижу проблем. функция rec описана рекурсивно? рекурсивно. процесс она порождает рекурсивный? рекурсивный. зачем же лишние разы передавать переменные, не изменяющиеся от вызова к вызову? лишний расход памяти, лишнее загромождение кода... =) -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Да, в принципе я ничего не имею против утверждения, что у Вас проблем никаких не было бы - не Вам же показывать текст преподу и выслушивать его комментарии и оценки.
|
|||
|
||||
adejneka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 8.7.2005 Где: Москва, Россия Репутация: 9 Всего: 11 |
2k0rvin: в Common Lisp по умолчанию для проверки равенства принято использовать EQL, а не EQ (последняя часто не работает с числами).
|
|||
|
||||
![]() ![]() ![]() |
Правила форума LISP | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | LISP | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |