Сопоставление с образцом со звездой Клини на тип структуры в Racket

Я начал играть с Racket система сопоставления шаблонов недавно и столкнулась с проблемой, которую я не могу понять.

Если я сделаю:

(match (list 1 2 3 4 5 6 7 8 9 10 11 12)
    [(list _ x y z ...) (list y ': x)]) 

в REPL, я получу

'(3 : 2)

как желаемый результат.

Если я делаю:

(match (current-date)
    [(date* _ x y z ...) (list y ': x)])

или

(match (date* 5 18 13 18 11 2011 5 321 #f 3600 0 "W. Europe Standard Time")
    [(date* _ x y z ...) (list y ': x)])

, я получаю эту ошибку:

match: wrong number for fields for structure date*: expected 12 but got 5 in: (_ x y z ...)

Я подозреваю, что звезда Клини ... по какой-то причине не работает с типом структуры. Почему это так?

5
задан Sam Tobin-Hochstadt 20 November 2011 в 16:15
поделиться