Архитектору и проектировщику|Тепло- и звукоизоляция URSA.RU
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoLisp. Можно использовать компилированные функции на других диалекта?

AutoLisp. Можно использовать компилированные функции на других диалекта?

Ответ
Поиск в этой теме
Непрочитано 02.05.2013, 12:39 #1
AutoLisp. Можно использовать компилированные функции на других диалекта?
Kirill_Ja
 
Мурманск
Регистрация: 28.07.2008
Сообщений: 208

Например у нас есть задача. Отсортировать список из списков по возрастанию 1-о элемента подсписков и удалить совпадающие.
Есть для этого в AutoLisp функция vl-sort, но мы не можем создать тест-функцию с произвольным количеством аргументов, которая будет извлекать нужный элемент подсписков и сравнивать их.
Но создавать такие функции есть возможность в COMMON Lisp'е и мы знаем, что некоторые встроенные функции AutoLisp содержат возможность задать произвольное количество аргументов (= > < и т п).
Можно ли скомпилировать необходимую тест-функцию на CL, потом загрузить fas файл и невозбранно пользоваться более большим функционалом или это утопия и не стоит даже пытаться?
Просмотров: 1767
 
Непрочитано 02.05.2013, 13:12
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Цитата:
Сообщение от Kirill_Ja Посмотреть сообщение
Можно ли скомпилировать необходимую тест-функцию на CL, потом загрузить fas файл и невозбранно пользоваться более большим функционалом
Можно скомпилировать фунцию на ObjectArx либо любом .Net языке - только естественно не fas а dll и "тянуть" весь интерпритатор коммон лиспа с ним - явно глупо (есть более преспособленные для этого языки).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 02.05.2013, 14:05
#3
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


Ну зачем же тянуть интерпретатор?
Как-то же написаны функции а-ля (list) (strcat) и т.п. Роботают под AutoLisp и никакого интерпретатора не требуют и при этом не зависят от количества переданных аргументов.
Я когда-то читал, что там все дело в том, что аргументы можно задать поведение при помощи специальных ключей, начинающихся со знака &.
А можно эти возможности как-то получить под AutoLisp?
Kirill_Ja вне форума  
 
Непрочитано 02.05.2013, 17:50
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


Цитата:
Сообщение от Kirill_Ja Посмотреть сообщение
А можно эти возможности как-то получить под AutoLisp?
Можно аргумент функции указывать в виде ассоциативного списка. Да, необязательные параметры -это хорошо. Но без них можно обойтись вполне успешно, в том числе ваша задача.
gomer вне форума  
 
Непрочитано 03.05.2013, 01:28
#5
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,683
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Kirill_Ja Посмотреть сообщение
Как-то же написаны функции а-ля (list) (strcat) и т.п. Роботают под AutoLisp и никакого интерпретатора не требуют
AutoLISP - это что по-твоему? Это и есть интерпретатор LISP, написанный на языке, используемом разработчиками AutoCAD (наверное, C++).
Do$ вне форума  
 
Непрочитано 03.05.2013, 01:47
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Цитата:
Сообщение от Kirill_Ja Посмотреть сообщение
А можно эти возможности как-то получить под AutoLisp?
Нет. Можно написать (не на автолиспе) встроенную dll в которой описать работу лисп-функции с произвольным количеством аргументов (но, к сожалению, совсем не совсеми lisp типами данных она сможет работать).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 03.05.2013, 02:12
#7
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


В общем, просто красивая идея. Ну и ладно. Есть еще много чего ненаписанного.
Задача, описанная в шапке вроде элементарная и часто встречающаяся (по крайней мере у меня).
А есть красивое решение? Я что-то ее несколько раз решал и все по-разному и всегда с чувством, что можно лучше.
Kirill_Ja вне форума  
 
Непрочитано 03.05.2013, 13:06
#8
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


Цитата:
Сообщение от Kirill_Ja Посмотреть сообщение
А есть красивое решение?
Например так:
Код:
[Выделить все]
 (defun test (lst)
  (vl-sort
    ((lambda (lst f-rec)
       (f-rec lst)
     )
      lst
      (lambda (lst)
	    (if lst
	      (if (member (car lst) (cdr lst))
	        (f-rec (cdr lst))
	        (cons (car lst) (f-rec (cdr lst)))
	      )
	    )
      )
    )
    (function (lambda (x y) (< (car x) (car y))))
  )
)
gomer вне форума  
 
Непрочитано 03.05.2013, 13:52
#9
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Kirill_Ja Посмотреть сообщение
есть красивое решение? Я что-то ее несколько раз решал и все по-разному и всегда с чувством, что можно лучше.
Что имеется в виду, есть простое, не раз пользовался

Код:
[Выделить все]
(defun sort-and-uniq (lst / remove-dupes sortuniq)
(defun remove-dupes (lst)
  (cond
    ((not lst) nil)
    ((member (car lst) (cdr lst))
     (remove-dupes (cdr lst))
    )
    (t (cons (car lst) (remove-dupes (cdr lst))))
  ) ;_ end of cond
) ;_ end of defun


(setq sortuniq (remove-dupes
       (mapcar
    '(lambda (x) (nth x lst))
     (vl-sort-i lst '(lambda (p q)(<(car p)(car q))))
  )
 )
      )
  sortuniq
  )

;;usage:
(setq sorted (sort-and-uniq lst))
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoLisp. Можно использовать компилированные функции на других диалекта?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли использовать наливные полы и покрытие типа Миксан, в школах? izlife Архитектура 4 11.03.2013 07:59
Можно ли использовать натурную сваю после испытаний? mzu Основания и фундаменты 3 26.02.2013 09:19
Мониторы LCD CRT Разное 94 17.06.2008 10:51
можно ли использовать в качестве наполнителя в стеновых блок ilya20000 Конструкции зданий и сооружений 1 15.05.2007 13:37
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46