我只是编写随机程序并查看是否可以使用local
。有没有办法让local
用于此? -
(define (filt n)
(filter number? n))
(define (mapn n)
(map add1 (filt n)))
(define (mapl n)
(map list (mapn n)))
(check-expect (mapl(list 1 2 false "true" "b" 'b true 4 9)) (list (list 2) (list 3) (list 5) (list 10)))
第一个程序确保输出只是数字。第二个为每个数字加1,第三个程序创建列表中每个单独元素的列表。
我尝试过,但我没有得到答案,最终导致用户休息。
(define (mapit n)
(local [(define (filt l)
(filter number? l))]
(local [(define (mapn b)
(map add1 b))]
(mapit (map list n)))))
答案 0 :(得分:1)
您想使用let
。
(let ( (name value)
(othername othervalue))
expression-using-name)
所以
(define (map-it n)
(let ((filt (lambda (l)
(filter number? l)))
(mpan (lambda (b)
(map add1 b))))
(mapit map list n)))
但是你想在这里完成什么?您实际上并未在任何地方使用mapn
或filt
。
我认为你可以使用
(define (mapl n)
(define (filt n)
(filter number? n))
(define (mapn n)
(map add1 (filt n)))
(map list (mapn n)))
由于scheme允许嵌套定义。