| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,041
|
Просто вы, занимаясь самолюбованием, не смогли понять одной простой мысли, которую до вас пытались донести - лисп является списочным языком с последовательной обработкой данных в списке. Этим он и сложен для тех, кто привык на других языках писать - так как надо перестраивать подход к проектированию архитектуры программ и написанию самого кода.
|
|||
|
||||
Регистрация: 20.04.2014
Сообщений: 38
|
Список реализуется как точечная пара, у которой car указывает либо на атом, либо на точечную пару, а cdr указывает на другой список.
Цитата:
Цитата:
|
|||
|
||||
Регистрация: 20.04.2014
Сообщений: 38
|
Цитата:
|
|||
|
||||
САПР Регистрация: 29.09.2011
СПб
Сообщений: 283
|
Ну я постесняюсь в качестве доказательства приводить ссылку на википедию - стандарт языка из нее так себе.
Процитирую "Common Lisp the Language, 2nd edition" 2.4: Как бы да, "A list is recursively defined to be either the empty list or a cons whose cdr component is a list.", но определяется - не значит реализовывается, но это так, к слову. А вообще: A dotted list is one whose last cons does not have nil for its cdr, rather some other data object (which is also not a cons, or the first-mentioned cons would not be the last cons of the list). Such a list is called ``dotted'' because of the special notation used for it: the elements of the list are written between parentheses as before, but after the last element and before the right parenthesis are written a dot (surrounded by blank space) and then the cdr of the last cons. As a special case, a single cons is notated by writing the car and the cdr between parentheses and separated by a space-surrounded dot. Но это в стандарте Common Lisp, поддержка которого vlisp на заявляется. Как пример разниц реализаций с sbcl Хотя (length '(1 2 . 3)) sbcl => The value 3 is not of type LIST vlide => неверный список: 3 Но (last '(1 2 . 3)) sbcl => (2 . 3) vlide => неверный список: 3 Учитывая многообразие диалектов лиспа, я не стал бы говорить, я не стал бы говорить про все реализации лиспа, но в общем, vlide гораздо ближе к emacs lisp, чем к стандартизированному.
__________________
На работе было скучно:shout: Последний раз редактировалось ciril, 20.02.2019 в 18:40. Причина: К тому же |
|||
|
||||
Регистрация: 20.04.2014
Сообщений: 38
|
Цитата:
Цитата:
Цитата:
Итого: любой список, будь он правильный или неправильный, это цепочка пар. Аргументами в функции передается указатель на его первую пару. Значит, всякий список, в первую очередь - это пара. |
|||
|
||||
Регистрация: 20.04.2014
Сообщений: 38
|
|
|||
|
||||
Delphi, Assembler, PHP, VB, Lisp с 01.02.2019 Регистрация: 10.02.2019
Воронеж
Сообщений: 30
|
Цитата:
По крайней мере, сейчас проверил nth на дальней части списка из 3000000 записей - результат получил мгновенно, хотя сам список формировался около 8 секунд. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,041
|
Цитата:
|
|||
|
||||
Delphi, Assembler, PHP, VB, Lisp с 01.02.2019 Регистрация: 10.02.2019
Воронеж
Сообщений: 30
|
Цитата:
----- добавлено через ~9 мин. ----- А сейчас попробовал в начале списка - менее секунды. Да, действительно перебирает подряд. Косяк разработчиков. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,041
|
|
|||
|
||||
Delphi, Assembler, PHP, VB, Lisp с 01.02.2019 Регистрация: 10.02.2019
Воронеж
Сообщений: 30
|
Ну да, у списков свои преимущества, у массивов - свои. Но, как по мне, это всё эстетство (в смысле, рассуждать о том, что лучше, что хуже). Решать задачу надо теми инструментами, которые лучше всего подходят для этой задачи.
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Вот это да, по моему я уже 2 раза ответил, да и до вопроса, в приведенной цитате было написано.
Цитата:
p.s. - по поводу замеров производительности - не смущает что сравнивается скомпилированная функцию и работа интерпритатора.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Квадрантное представление окружности на AutoLISP | v1talka | LISP | 39 | 29.02.2012 14:25 |
Литература по AutoLisp и VBA для приложений | M_konst | LISP | 5 | 29.08.2009 17:32 |
Как отладить нейтив и менеджед код в COM объекте который используется из AutoLISP? | lexluther | LISP | 1 | 12.08.2009 08:37 |
Параметрическая библиотека в autoLISP | joisegatoi | LISP | 8 | 18.06.2007 18:39 |
Как из Delphi запустить программу на AutoLISP | Valery | LISP | 1 | 23.09.2005 20:51 |