6
私はいくつかの値が(list 'foo 'bar 2 #t 42 9 2 'some)
のラケットリストを持っています。実際にはこれらの値はいくつかのより具体的なパターンに従いますが、質問に対してはこれは無関係です。リストに2つの同じ値(この場合は2)があり、要素と他の要素がある場合、テストをテストします。これは私の試みです:未定義リスト内の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
に変更するとパターンは機能しますが、もちろん要素がリストの先頭にある場合のみです。
私のパターンは間違っていますか?それを修正する方法や意図したパターンは不可能で、その回避策は何ですか?
ここでは、 '(match-list 2 2t)[(list-no-order asd asd dsa) "Do some stuff"]) ':http://pastebin.com/K3PG44kY。私たちには、非対称ID「asd8」があることがわかります。おそらくマクロはバグでしょうか? –
これはバグであることがどの程度確実ですか?私はそれをラケット開発者に報告すべきでしょうか? – Pyfisch
[Github](https://github.com/racket/racket/issues/1304)で報告されています。 – Pyfisch