我遇到了一个我写过的函数,它使用了相同的代码几次。
这是一个例子:
(define (get-min&max-from-mixed-list mixedList)
(if (null? (sublist-numbers mixedList))
'()
(min&maxRec (sublist-numbers mixedList)
(first (sublist-numbers mixedList)) ; this
(first (sublist-numbers mixedList))) ; and this
)
)
在程序编程语言中我会做到:
int x = (first (sublist-numbers mixedList))
min&maxRec(sublist-numbers(mixedList) , x , x)
根据我对功能语言的理解,我们不会将内容保存在内存中,之后我们会使用它们。那么我怎么能不重复代码?
答案 0 :(得分:1)
您可以使用let
将值绑定到符号&在let
正文中经常使用该符号。
它的文档&相关表格如下:https://docs.racket-lang.org/reference/let.html
你可以在你的例子中使用它:
(define (get-min&max-from-mixed-list mixedList)
(let ((snm (sublist-numbers mixedList)))
(if (null? snm)
'()
(min&maxRec snm
(first snm)
(first snm))
)
)
)