我正在学习如何使用"匹配"在Racket中的功能,但我不确定它在某些情况下是如何工作的。
例如,我遇到的一个问题是使用match来替换程序中每个出现的lambda,单词为" lumbda"。
> (lambda->lumbda '(lambda (lambda) lambda))
(lumbda (lambda) lambda)
它应该只改变功能" lambda" to" lumbda",而不是任何变量。我不知道如何解决这个问题。
答案 0 :(得分:0)
试试这个:
(define (lambda->lumbda exp)
(match exp
[(list 'lambda args body) (list 'lumbda args body)]
[_ (error "unknown expression")]))
例如:
(lambda->lumbda '(lambda (lambda) lambda))
=> (lumbda (lambda) lambda)