gpt4 book ai didi

pattern-matching - 如果无序列表中的两个值相同则匹配

转载 作者:行者123 更新时间:2023-12-04 15:55:17 24 4
gpt4 key购买 nike

我有一个包含一些值的 Racket 列表 (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-orderlist该模式有效,但当然仅当元素位于列表的开头时。

我的模式是错误的,如果是,如何纠正它或者预期的模式是不可能的,解决它的最佳方法是什么?

最佳答案

目前,最好的解决方法是使用 #:when健康)状况:

#lang racket

(match (list 'foo 'bar 2 #t 42 9 2 'some)
[(list-no-order a b rest ...)
#:when (equal? a b)
"Do some stuff"]
[_ "Do some other stuff"])

关于pattern-matching - 如果无序列表中的两个值相同则匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36486690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com