宏将多个功能重命名

时间:2016-09-15 17:07:23

标签: scheme racket

以下声明可用于重命名" expt"功能"电源":

(define-syntax power (make-rename-transformer #'expt)

可以多次使用上述语句重命名多个函数。

可以一次重命名多个功能,例如重命名+, - ,*和/分别添加,sub,mul和div?

1 个答案:

答案 0 :(得分:2)

当然,

#lang racket

(define-syntax-rule (renamer [old new] ...)
  (begin (define-syntax new (make-rename-transformer #'old)) ...))

(renamer [expt power] [+ add] [- sub])

但正如@AlexisKing所说,使用rename-in会更方便。

#lang racket

(require
  (rename-in racket/base
    [expt power]
    [+ add]))

(power 3 3) ;; 27