我正在尝试将模式匹配功能添加到现有方案元循环评估器(这是家庭作业),我对说明的措辞有点迷茫。我希望在这方面更熟练的人可以帮助我解释这一点。
match 的语法应如下所示:(match a ((p1 v1) (p2 v2) (p3 v3)))
它可以用来查找长度,如下所示:
(define length (lambda (x)
(match x (('() 0)
(('cons a b) (+ 1 (length b))))))
函数中的模式语言应包含数字常量、带引号的常量、变量和 cons。如果模式用尽但没有找到匹配项,则应抛出错误。
我以为我理解了模式匹配的概念,但是以这种方式在函数中实现它让我有点失望。有人愿意解释上面的语法在做什么(特别是上面的长度如何使用匹配),以便我可以更好地理解这个函数应该做什么?