Как применить функцию в Scheme к списку аргументов, возвращаемых другой функцией? - PullRequest
3 голосов
/ 17 июля 2011

Предположим, есть две функции, f и v. Предположим далее, что v возвращает список длины n и f ожидает ровно n аргументов.Я ищу правильный синтаксис в Схеме для применения f к списку, возвращенному v.

Если я использую синтаксис (f (v v-arguments)), тогда я получаю ошибку о том, что f ожидает n аргументов, но получает только один аргумент (которыйэто список, возвращаемый v).

Если я использую синтаксис (f . (v v-arguments)), то проблема в том, что слишком много аргументов передается в f.

Лучшее, что я мог сделать (для случая, когдаf ожидает два аргумента) это так:

(let ((output-of-v (v v-arguments)))
  (f (car output-of-v) (cadr output-of-v)))

Я уверен, что должен быть лучший способ, и я был бы благодарен за любой совет!

1 Ответ

9 голосов
/ 17 июля 2011

Кажется, вы ищете применить :

(apply f (v v-arguments))

Как объяснено здесь , функция apply применяется aфункция к списку аргументов, фактически передавая их как позиционные аргументы этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...