如何编写一个接收任意数量的参数并打印出来的宏?

时间:2011-09-02 22:35:58

标签: scheme racket

(define-syntax prnt 
  (syntax-rules ()
               [(prnt elem ...) (display (format "~a" elem ...))]
               ))

以上代码在球拍中运行会发出以下错误:

  

格式:格式字符串需要1个参数,给定3;争论是:   “~a”“1”2 3

然后我怎样才能实现使用(prnt“1”2 3),它可以打印任何关于prnt的东西?

1 个答案:

答案 0 :(得分:2)

如果你真的想要一个宏:

(define-syntax prnt 
  (syntax-rules ()
    [(prnt elem ...)
     (begin (displayln elem) ...)]))

如果您只想通过单个函数调用显示多个对象,则不需要宏:

(define (prnt . args)
  (for-each displayln args))