0

我目前正在尝试通过函数修改 LLT(叶标记树)。

本质上我希望叶值(L)由函数(fn)修改

到目前为止,这是我的代码

(define (llt-map fn T)
  (cond
    [(empty? T) '()]
    [(not (list? (first T)))
     (cons (fn (first T))
       (llt-map fn (rest T)))]                    
    [else (cons
       (llt-map fn (first T))
       (llt-map fn (rest T)))]))

代码实际上是有效的,但我有一个案例我想检查,但我不知道为什么它不工作。我确信这很容易找出为什么这个案例不起作用,但我不知道为什么。

这是不起作用的情况

(check-expect (llt-map (lambda (x) (+ 5 (/ x 2)))
                       (list 2 (list 20 30 40) list 8))
              (list 6 (list 15 20 25) list 9))
4

1 回答 1

0

我已经解决了自己的问题,这只是简单的语法错误,我的错。

案例应该写成

(check-expect (llt-map (lambda (x) (+ 5 (/ x 2)))
                   (list 2 (list 20 30 40 (list 8)))) 

而不是

(check-expect (llt-map (lambda (x) (+ 5 (/ x 2)))
                   (list 2 (list 20 30 40) list 8))
          (list 6 (list 15 20 25) list 9))))

就像我以前一样。

于 2019-07-24T00:52:29.340 回答