How do I pass a list as a list of arguments in racket?

僤鯓⒐⒋嵵緔 提交于 2019-11-29 06:06:38

That operation is called apply.

(apply + (list 1 2 3))   ; => 6

apply "expands" the last argument; any previous arguments are passed as is. So these are all the same:

(apply + 1 2 3 (list 4 5 6))
(apply + (list 1 2 3 4 5 6))
(+ 1 2 3 4 5 6)

Pay attention to the following definition

(define (a . b) (apply + b))
(a 1)
(a 1 2)
(a 1 2 3)

'.' gives you ability to pass any number of arguments to a function. You can still have required arguments

(define (f x . xs) (apply x xs)) ;; x is required
(f + 1 2 3) ;; x is +, xs is (1 2 3)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!