【发布时间】:2016-06-06 04:40:40
【问题描述】:
有什么方法可以检测宏是否在模式匹配中扩展?
这是我想编写的示例宏,但它在 match-define 内失败:
#lang racket/base
(require racket/match (for-syntax racket/base syntax/parse))
(struct point (x y))
(define-syntax (friendly-point stx)
(syntax-parse stx
[(_ arg* ...)
#'(begin (printf "Now making a point\n") (point arg* ...))]
[_ #'(begin (printf "Hello point\n") point)]))
(define p (friendly-point 1 2))
;; Prints "Now making a point"
(match-define (friendly-point x y) p)
;; ERROR
【问题讨论】: