0
這段代碼的目的是去除並返回一個列表X的前N個部分獲得一個「應用程序:不是一個程序」的錯誤
{define (grab x n)
(cond
[(< (len x) n) x]
[(> n 1)((car x) (grab(cdr x) (- n 1)))]
[(= n 1)(car x)]
)}
它目前只是返回上面的錯誤
這段代碼的目的是去除並返回一個列表X的前N個部分獲得一個「應用程序:不是一個程序」的錯誤
{define (grab x n)
(cond
[(< (len x) n) x]
[(> n 1)((car x) (grab(cdr x) (- n 1)))]
[(= n 1)(car x)]
)}
它目前只是返回上面的錯誤
有有一對夫婦在解決方案中的錯誤:
cons
當前值 - 記住,我們遞歸構建列表作爲答案,我們必須使用cons
這樣做0
而不是1
。否則,當n
等於零n
等於零,應返回空列表的過程將失敗 - 否則輸出列表不會被正確構造有了上述所有修復,該過程將工作:
(define (grab x n)
(cond
[(< (len x) n) x]
[(> n 0) (cons (car x) (grab (cdr x) (- n 1)))]
[(= n 0) '()]))
作爲一個側面說明,你基本上實現take
程序,如果這是你的解釋提供(除take
將引發一個錯誤,如果n
是格雷亞與列表長度相比):
(take '(1 2 3 4 5) 3)
=> '(1 2 3)