![]() |
|
|
![]()
|
|
| Orcin |
|
|||
|
Unregistered |
Я вот только начал изучать Лисп, и не могу написать одну функцию, назовем ее elem -
(elem N L) выбирает на верхнем уровне списка L |N|-тый элемент, отсчитанный от начала списка, если N>0, или от конца списка, если N<0, например: (elem 2 ‘(a (12) b (3))) => (12) (elem -2 ‘(a (12) b (3)) => b вот. запутался на такой простой реализации! подскажите, плиз, как тут быть? и еще у меня 1 вопрос - если я запутался на таком простом задании, то, может, Лисп не для меня?? заранее благодарю, господа! |
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 1 Всего: 25 |
Можно так:
(defun plus (n l) (if (= n 1) (first l) (plus (- n 1) (rest l)))) (defun minus (n l) (if (= n -1) (last l) (nth (+ (length l) n) l))) (defun elem (n l) (if (> n 0) (plus n l) (if (< n 0) (minus n l)))) Как бы разбил твою функцию на три функции, можно это все в одну функцию слить, но это муторно, много проверок и условностей... как например тут не отработана проверка на n=0. А насчет второго вопроса... а для кого этот Лисп вообще? -------------------- |
|||
|
||||
| svg |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.4.2005 Репутация: 14 Всего: 18 |
что-то типа такого:
Это с непривычки, пройдет. А вообще-то для изучения легче Scheme,а вот для работы лучше CommonLisp. Это сообщение отредактировал(а) svg - 13.4.2005, 19:53 |
||||
|
|||||
| Lisper |
|
|||
|
Unregistered |
>А насчет второго вопроса... а для кого этот Лисп вообще? мое мнение он нужен для >преподов в ВУЗах, чтобы нас студентов им мучить )))) и для общего программерского >развития, а так, практической ценности я в нем не вижу...
Действительно только людей отвращают от на самом деле весьма практически полезного языка. Хотя некоторым должно с ходу начинать нравиться. Вы случайно программы не блокноте пишите ? Рекомендую пользоваться редактором с подсветкой синтаксиса. Например из простых Corman Lisp (www.cormanlisp.com) это может, там и подсказка по функциям стандарта имеется. Странно, Лисп таки преподают, но видать на столько скучно и бездарно, что студенты вешаются. Взяли бы за основу какую-нибудь книгу типа Practical Common Lisp или Anso Common Lisp Грэхэма, дело пошло бы веселее. Кстати, когда подобные задачи дают на Си, иногда они бывают довольно пакостные, никто не говорит, что Си якобы практической ценности не имеет, и чем Лисп перед всеми так провинился ? |
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 1 Всего: 25 |
Да ничем, на самом деле довольно интересный язык ...для тренировки мозгов, преподавать да, преподают у нас в ВУЗе, преподают ужасно, типа делается вот так и так.. а вот вам и задачи, думайте!
-------------------- |
|||
|
||||
| antisergey |
|
|||
|
Unregistered |
(
defun elem ( lambda (n l) ( cond ((>= n 0) (nth n l)) (t (nth (- n) (reverse l))) ) ) ) Если n>=0, то n-ый car от списка (n=0 - исходный список), если n<0, то (-n)-ый car от реверсированного списка (я писал в среде FORIS). |
|||
|
||||
| Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: 1 Всего: 41 |
|
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Вообще, Lisp считается более естественным языком, но я в этом сильно сомневаюсь ;)
|
|||
|
||||
| _sg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 16.5.2007 Репутация: 2 Всего: 2 |
как вариант:
--------------------
vk.com/ansicommonlisp |
|||
|
||||
![]()
|
| Правила форума LISP | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | LISP | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |