6
我有一个球拍列表,其中有些值为(list 'foo 'bar 2 #t 42 9 2 'some)
。实际上,这些价值观遵循一些更具体的模式,但对于这个问题来说,这是无关紧要的。我想测试列表中是否有两个相同的值,在这种情况下是数字2,并获取元素和其他元素。这是我的尝试:如果无数列表中的两个值相同,则匹配
#lang racket
(match (list 'foo 'bar 2 #t 42 9 2 'some)
[(list-no-order a a rest ...)
"Do some stuff"]
[_ "Do some other stuff"])
该模式是(list-no-order a a rest ...)
。但程序的解释失败:
a11: unbound identifier;
also, no #%top syntax transformer is bound in: a11
对我来说,它在转换宏时看起来是一个错误。如果将list-no-order
更改为list
,则该模式将起作用,但当然只有当元素位于列表的开头时才适用。
我的模式是错误的,如果是的话如何纠正它,或者是不可能的预期模式,什么是解决它的最佳方式?
这里是'(匹配宏展开(表2 2#T)(列表无秩序ASD ASD后的结果dsa)“做一些事情”])':http://pastebin.com/K3PG44kY。我们可以看到有一个未绑定的id asd8。也许这个宏是越野车? –
你有多确定这是一个错误?我应该向球拍开发者报告吗? – Pyfisch
报告在[Github](https://github.com/racket/racket/issues/1304)。 – Pyfisch