LINUX.ORG.RU

Элементы списка как параметры функции

 ,


1

1

Есть список типа

'((1 2) 3 4 (5 6) (7 8))
И функция с двумя аргументами, один из которых необязательный.

Мне нужно замапить функцию на этот список аргументов. Как это в elisp принято делать?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

эмм, а какие из вышеупомянутых необязательны?

lazyklimm ★★★★★
()

Не совсем понял, что ты имеешь в виду.

Такое?

(destructuring-bind (one two &optional three) '(1 2 '(3))
  (print one)
  (print two)
  (print three))

kovrik ★★★★★
()

Так?

ELISP> (flet ((my-function (x &optional (y 1))
                           (+ x y)))
         (mapcar (lambda (x)
                   (apply 'my-function
                          (if (atom x)
                              (list x)
                            x)))
                 '((1 2) 3 4 (5 6) (7 8))))
(3 4 5 11 15)

ELISP> 
ados ★★★★★
()
Ответ на: комментарий от ados

Да, так! А можно как-нибудь как в python развернуть параметры из списка? Т.е. заменить apply на funcall.

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

А можно как-нибудь как в python развернуть параметры из списка?

Нет, автоматически, как в питоне, это не делается. Только apply. Но можно запилить макрос для удобства именно твоей задачи.

no-such-file ★★★★★
()
Ответ на: комментарий от ados

Выглядит это лучше, можно конечно макрос написать, причем в этом ничего сложного, но черт с ним. И так сойдет.

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

У них аватарки страшные; не очень понял. Хотя возможно это из-за пятницовечера.

tensai_cirno ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.