我正在學習如何使用球拍中的「匹配」功能,但我不確定它在某些情況下如何工作。球拍 - 匹配功能
例如,我遇到的一個問題是使用匹配來替換程序中每個出現的lambda「lumbda」。
> (lambda->lumbda '(lambda (lambda) lambda))
(lumbda (lambda) lambda)
它只應該將函數「lambda」更改爲「lumbda」,而不是任何變量。我不知道如何去做這件事。
我正在學習如何使用球拍中的「匹配」功能,但我不確定它在某些情況下如何工作。球拍 - 匹配功能
例如,我遇到的一個問題是使用匹配來替換程序中每個出現的lambda「lumbda」。
> (lambda->lumbda '(lambda (lambda) lambda))
(lumbda (lambda) lambda)
它只應該將函數「lambda」更改爲「lumbda」,而不是任何變量。我不知道如何去做這件事。
試試這個:
(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)
不幸的是,是的。我想出了上述解決方案,但它被指定使用匹配。 –
太棒了!它運作的很好,除非我只是試着運行 >(lambda-> lumbda'x) 它應該只返回x。我對比賽太不熟悉,沒有多少意義。 :/ –
更改las行,而不是引發錯誤返回與參數 –
如果您發佈的嘗試性解決方案 –
需要注意的是你的榜樣看起來可疑這將是有益的。由於它被引用,它將**從不**成爲一個程序,只是看起來像一個來源。 – Sylwester