球拍 - 比赛功能

时间:2016-09-07 14:15:00

标签: match racket

我正在学习如何使用"匹配"在Racket中的功能,但我不确定它在某些情况下是如何工作的。

例如,我遇到的一个问题是使用match来替换程序中每个出现的lambda,单词为" lumbda"。

    > (lambda->lumbda '(lambda (lambda) lambda)) 
    (lumbda (lambda) lambda)

它应该只改变功能" lambda" to" lumbda",而不是任何变量。我不知道如何解决这个问题。

1 个答案:

答案 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)