Scheme 本地输入计划

Scheme 本地输入计划,scheme,local,racket,Scheme,Local,Racket,我只是在编一些随机程序,看看是否可以使用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) (

我只是在编一些随机程序,看看是否可以使用
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)))))

您想使用
let

(let ( (name value)
       (othername othervalue))
  expression-using-name)
所以

但你想在这里完成什么?实际上,您没有在任何地方使用
mapn
filt

我想你可以用

(define (mapl n)
  (define (filt n)
    (filter number? n))

  (define (mapn n)
   (map add1 (filt n)))

  (map list (mapn n)))
因为scheme允许嵌套定义

(define (mapl n)
  (define (filt n)
    (filter number? n))

  (define (mapn n)
   (map add1 (filt n)))

  (map list (mapn n)))