Может ли Схема расширить список в качестве аргументов?

Считается, что у меня есть процедура (plus x y) ведьма берет ровно два аргумента И теперь у меня также есть список, который содержит два объекта, такие как (list 1 2), Итак, если есть какой-то волшебный способ расширить список двумя аргументами. У нас есть точечная версия, но это не то, что я хочу. Я просто хочу расширить список, чтобы Схема поверила, что я передал два аргумента вместо списка.

Надеюсь, что эти коды Ruby помогут:

a = [1, 2]
def plus(x,y); x+y; end

plus(*a)
# See that a is an array and the plus method requires
# exactly two arguments, so we use a star operator to
# expand the a as arguments

2 ответа

Решение
(apply your-procedure your-list)

Это эквивалентный код Схемы:

(define (plus x y)
  (+ x y))

(plus 1 2)
=> 3

(define a (list 1 2))
(apply plus a)
 => 3

"Волшебный" способ расширить список и передать его в качестве аргументов процедуры, использует apply, Узнайте больше об этом в документации вашего переводчика.

Другие вопросы по тегам