在这里计划的新手。我正在尝试编译一个方案函数,range
. 这非常简单 - 它需要一个start
,step
和stop
列表L
并创建一个新列表,其中每个元素 = stepAmt + curStep。
例如:(范围'(0 2 7))=>(0 2 4 6),(范围'(2 2 0))=>()
当我尝试编译时
(define (helper2(start stepAmt stop curStep newList)
(if (> start stop)
'()
(if (> (+ stepAmt curStep) stop)
newList
(helper2 (start stepAmt stop (+ stepAmt curStep) (concat newList (+stepAmt curStep))))))))
我得到错误
病态特殊形式:(define helper2 (start stepamt stop curstep newlist) (if ... ... ...))
我不确定这意味着什么。我已经仔细检查了我的逻辑和括号,但无法弄清楚。
这是将调用该函数的函数:
(define (example L)
(let (
(start (car L))
(curStep (car (cdr L)))
(step (car (cdr L)))
(stop (car (cdr (cdr L))))
)
(helper2 (start step stop curStep '()))
)
)
任何指针都会很棒。我不确定这是错字还是逻辑错误。谢谢!