Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
1

Как вызвать функцию?

24.02.2016, 21:22. Показов 3947. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, как вызвать функцию F для поиска минимального остовного дерева?
https://www.cyberforum.ru/post6334776.html

Ввожу:
Lisp
1
(F (1 a b))
выводит ошибку
Lisp
1
2
EVFUN: Не найдена функция 1
==> ERRSTATE
Добавлено через 8 минут
Погите пожалуйста. Просто скажите, как вызвать функцию, это так трудно?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2016, 21:22
Ответы с готовыми решениями:

Как правильно вызвать функцию
Здравствуйте. Как вызвать эту функцию в консоли Steel Bank Common Lisp? (defun SORT1(LST) ;...

Как вызвать функцию?
в программе 4 функции,не понимаю как вызвать 2-ую и 4-ую. Вот что делает...

Как вызвать функцию в командной строке ?
Здравствуйте, есть функция listLength записанная в файле .hs вот ее код data List a = Nil ...

Как правильно вызвать функцию с указателем на другую функцию как параметр
Вот вариант: double f(double x) { ... } double k(double (*f)(double), double y) { ...

11
VH
428 / 256 / 23
Регистрация: 23.11.2010
Сообщений: 278
24.02.2016, 21:33 2
Lisp
1
(F '((1 A B)))
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
24.02.2016, 21:40  [ТС] 3
VH, теперь пишет, что
Lisp
1
2
Аргумент CAR - атом (CAR)
==> ERRSTATE
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
24.02.2016, 21:40 4
Если не оговорено противное, списки вычисляются, причём предполагается, что на первом месте списка стоит имя функции, потом — аргументы. В частности,
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
(1 a b)
предполагает применение функции по имени 1 к аргументам a и b. Ваша система тактично намекает, что функции по имени 1 не существует.

Чтобы список не вычислялся, а воспринимался буквально, перед ним ставят кавычку.
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
24.02.2016, 21:51  [ТС] 5
VH, helter, помогите пожалуйста, умоляю. Всего лишь нужно вызвать функцию.

Скачал HomeLisp, создал в нем файл исходного кода, вбил в пустой файл первые 3 функции, взятые по ссылке (https://www.cyberforum.ru/post6334776.html), сохраняю этот файл исх. кода, загружаю этот файл(пишет, что загружен успешно), в окне области ввода ввожу
Lisp
1
(F '((1 A B)))
и возникает ошибка
Lisp
1
2
Аргумент CAR - атом (CAR)
==> ERRSTATE
Пробовал брать вариант Catstail'а, но при использовании его кода компилятор ругается на функцию сортировки (не знаю, где он ее взял).
0
VH
428 / 256 / 23
Регистрация: 23.11.2010
Сообщений: 278
24.02.2016, 22:09 6
У меня XLISP-PLUS 3.05 от Tom Almy. Все работает. http://almy.us/files/xl305win.zip
Диагностическое сообщение о том, что где-то выполняется вызов (car) не со списком, а с атомом. Вероятно, автор HomeLispа Catstail может прояснить эту ситуацию.
1
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
24.02.2016, 22:18  [ТС] 7
VH, Скажи, как вобще запустить код на указанном тобою компиляторе? У меня пишет
Как вызвать функцию?
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
24.02.2016, 22:26  [ТС] 8
VH,
Ошибку понял, теперь возникла вот такая проблема:
Как вызвать функцию?
0
VH
428 / 256 / 23
Регистрация: 23.11.2010
Сообщений: 278
24.02.2016, 22:33 9
Там же написано:
Формат списка данных Links:
((длина имя_узла1 имя_узла2)...)
Вызов функции:
(F список_данных)
то есть
если есть только одна связь (дуга) между узлами A и B длиной 1 (как у Вас), то
список содержит один элемент ((1 A B)) и
Lisp
1
(F '((1 A B)))
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
24.02.2016, 22:39  [ТС] 10
VH, можете мне объяснить, как мне задать 3 (пусть будет три) ребра функцией F?
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
24.02.2016, 22:48  [ТС] 11
Пытался ввести список из двух ребер, но ничего не происходит
Как вызвать функцию?


Ни ошибки, ни результата.
0
VH
428 / 256 / 23
Регистрация: 23.11.2010
Сообщений: 278
25.02.2016, 08:58 12
Лучший ответ Сообщение было отмечено Ferrari F1 как решение

Решение

Попробуйте
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(defun CLEAN_from_Nodes_in_Links (Nodes Links)
 (if Links
  ((lambda (elem result)
    ((lambda (test)
      (cond
       ((< test 2) (cons elem result))
       ((= test 2) (cons (cons (car elem) (reverse (cdr elem))) result))
       ((= test 3) result)))
     (apply '+
      (mapcar '*
      '(1 2)
       (mapcar
        (function (lambda (node)  ; здесь изменение
         (if (member node Nodes) 1 0)))
        (cdr elem))))))
   (car Links)
   (CLEAN_from_Nodes_in_Links Nodes (cdr Links)))))
а вызывать функцию
Lisp
1
(F '((1 a b)(1 a c)))
Добавлено через 9 часов 35 минут
Интересно, что в 2009 в версии 3.04 работало в форме (quote (lambda ...)) / '(lambda ...), а в версии 3.05 так не работает, а работает в форме (function (lambda ...)) / #'(lambda ...)
1
25.02.2016, 08:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2016, 08:58
Помогаю со студенческими работами здесь

Как правильно передать вектор в функцию и вызвать эту функцию?
Здравствуйте, объясните как исправить ошибку. Возникает после for(), выдается, что размер polygon =...

Как в функцию main вызвать функцию из другого .c файла
Здравствуйте. Я написал программу, которая в функцию main вызывает функцию из другого .c файла, но...

Как вы думаете, можно ли из основной ветки программы вызвать функцию, вложенную в другую функцию? Почему?
В языке Python можно внутри одной функции определять другую. Напишите программу по следующему...

Как вызвать функцию
Хочу создать хранилище , у базового класса есть функция virtual void parametri() { cout &lt;&lt; &quot;...

Как вызвать функцию ?
Не получается вызвать значение функции из number #include &lt;iostream&gt; int number(int x) { x...

Как вызвать функцию ?
Вот у меня есть вот такая функция как её вызвать ? void CAimbot::pSilent(CUserCmd* pCmd) {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru