Size: a a a

2019 December 04

ГА

Гегам Антонян in Lisp Forever
но я не знаю как определить что это вызов функции))
источник

b⛅

bouncepaw ⛅ in Lisp Forever
Andrew Kravchuk
Я бы так сделал
(defun minoflist (l)
 (apply #'min l))
Почему перед min целых два лишних символа? Они нужны, потому что коммон — лисп-2, да? :)
источник

b⛅

bouncepaw ⛅ in Lisp Forever
Гегам Антонян
ну скажем  аргумент функции есть  '(+ 1 2 3)  . как узнать что если это вызов функции то возвращать T
Если ты делаешь макрос, то просто проверяй, список ли это. Если функцию, то никак
источник

A

Aragaer in Lisp Forever
bouncepaw ⛅
Почему перед min целых два лишних символа? Они нужны, потому что коммон — лисп-2, да? :)
вопрос риторический
источник
2019 December 05

PG

Pïg Grëënëst in Lisp Forever
bouncepaw ⛅
Если ты делаешь макрос, то просто проверяй, список ли это. Если функцию, то никак
Ну, макрос это или функция тут не важно
источник

PG

Pïg Grëënëst in Lisp Forever
Просто функции надо квоты ручками ставить
источник

PG

Pïg Grëënëst in Lisp Forever
источник

PG

Pïg Grëënëst in Lisp Forever
Типа сделал
источник

PG

Pïg Grëënëst in Lisp Forever
Вряд ли у тебя получится сделать точно так же, схемы все довольно разные
источник

PG

Pïg Grëënëst in Lisp Forever
И почему я думал что это чат про схему?
источник

БР

Безумный Рубикон in Lisp Forever
Я вот не поеял .. а какой всетаки критерий, что список - это функция?
источник

PG

Pïg Grëënëst in Lisp Forever
Вызов функции
источник

a

akater in Lisp Forever
Andrew Kravchuk
Я бы так сделал
(defun minoflist (l)
 (apply #'min l))
В таких случаях следует использовать reduce. Варианты с
apply будут ограничены допускаемым числом аргументов к функции и не будут, вообще говоря, правильно работать для пустого списка.
источник

AZ

Aydar Zarifullin in Lisp Forever
akater
В таких случаях следует использовать reduce. Варианты с
apply будут ограничены допускаемым числом аргументов к функции и не будут, вообще говоря, правильно работать для пустого списка.
Почему в варианте с apply ограниченно количество аргументов?
источник

AK

Andrew Kravchuk in Lisp Forever
akater
В таких случаях следует использовать reduce. Варианты с
apply будут ограничены допускаемым числом аргументов к функции и не будут, вообще говоря, правильно работать для пустого списка.
Звучит логично, но (reduce #'min '()) мне точно так же ругается, что invalid number of arguments: 0
источник

a

akater in Lisp Forever
Andrew Kravchuk
Звучит логично, но (reduce #'min '()) мне точно так же ругается, что invalid number of arguments: 0
Ругается, min-то сам не умеет в пустой список. Я имел в виду что-то в духе
(reduce 'min nil :initial-value '∞)

Я вот не люблю reduce именно по этой причине. Не существует никакого reduce, существует fold, где начальное значение обязательно. fold подчеркивает верное использование функций с верной (более общей) сигнатурой, X✕Y  →  X вместо reduce'овского X✕X  →  X. (Я привык к математической записи, не умею как в CS записывать.)
источник

a

akater in Lisp Forever
Aydar Zarifullin
Почему в варианте с apply ограниченно количество аргументов?
(documentation 'call-arguments-limit 'variable)
источник

AK

Andrew Kravchuk in Lisp Forever
akater
Ругается, min-то сам не умеет в пустой список. Я имел в виду что-то в духе
(reduce 'min nil :initial-value '∞)

Я вот не люблю reduce именно по этой причине. Не существует никакого reduce, существует fold, где начальное значение обязательно. fold подчеркивает верное использование функций с верной (более общей) сигнатурой, X✕Y  →  X вместо reduce'овского X✕X  →  X. (Я привык к математической записи, не умею как в CS записывать.)
Согласен, тот же Racket с его foldl и foldr гораздо удобнее.
источник

a

akater in Lisp Forever
Andrew Kravchuk
Согласен, тот же Racket с его foldl и foldr гораздо удобнее.
Тут даже дело не в том, что «удобнее», с reduce ошибку проще сделать.

Впрочем, apply эстетически приятнее когда речь об ассоциативных функциях, например. Но CL есть CL.
источник

AK

Andrew Kravchuk in Lisp Forever
А ассоциативные - это какие?..
источник