类型球拍中的贪婪模式匹配
Greedy pattern matching in typed racket
我正在寻找匹配 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))`
使用 ...
执行贪婪模式匹配时,提供类型信息的最佳方式是什么?
经过进一步实验,匹配的输出似乎需要一些与其关联的打字信息。例如以下作品:
((lambda (l) : Any
(match l [(list (? real? n) ...) n]))
'(1 2 3))
我正在寻找匹配 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))`
使用 ...
执行贪婪模式匹配时,提供类型信息的最佳方式是什么?
经过进一步实验,匹配的输出似乎需要一些与其关联的打字信息。例如以下作品:
((lambda (l) : Any
(match l [(list (? real? n) ...) n]))
'(1 2 3))