类型球拍中的贪婪模式匹配

时间:2018-01-24 02:32:20

标签: typed-racket

我希望匹配打字/球拍中任意长度的模式列表。

我正在尝试做的一个简单示例是以下表达式:

(match '(1 2 3) [(list (? real? n) ...) n])

在无类型球拍中,我希望得到以下结果:

'(1 2 3)

但是,类型检查器会引发以下错误:

`Type Checker: Error in macro expansion -- insufficient type information to typecheck. please add more type annotations in: (match (quote (1 2 3)) ((list (? real? n) ...) n))`

使用...执行贪婪模式匹配时,提供输入信息的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

经过进一步的实验,看来匹配的输出需要一些与之相关的输入信息。例如,以下工作:

((lambda (l) : Any
         (match l [(list (? real? n) ...) n]))
  '(1 2 3))