(define-struct point (x y))
(define (helper lon)
(* (point-x lon)
(point-y lon)))
(define (cart lon)
(cond
[(empty? lon) 0]
[else
(+ (helper (first lon))
(cart (rest lon))1)]))
我正在玩游戏,制作一系列功能,以查看我是否可以使用本地功能。这只是将x和y相乘,并将结果加1。有没有办法可以替换我在这里创建的辅助函数并使用local?
答案 0 :(得分:1)
当然,这似乎是使用local
的好地方,只要helper
程序仅在cart
内使用:
(define (cart lon)
(local [(define (helper lon)
(* (point-x lon)
(point-y lon)))]
(cond
[(empty? lon) 0]
[else
(+ (helper (first lon))
(cart (rest lon))
1)])))
另请注意,根据使用的语言,local
可能不是必需的,一个简单的内部定义也可以解决问题:
(define (cart lon)
(define (helper lon)
(* (point-x lon)
(point-y lon)))
(cond
[(empty? lon) 0]
[else
(+ (helper (first lon))
(cart (rest lon))
1)]))