Может ли Схема расширить список в качестве аргументов?
Считается, что у меня есть процедура (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 ответа
Решение
Это эквивалентный код Схемы:
(define (plus x y)
(+ x y))
(plus 1 2)
=> 3
(define a (list 1 2))
(apply plus a)
=> 3
"Волшебный" способ расширить список и передать его в качестве аргументов процедуры, использует apply
, Узнайте больше об этом в документации вашего переводчика.