在Scheme/Racket中左侧旋转一个列表

Don*_*son 6 scheme list racket

试图旋转方案/球拍中的左侧列表.例如:(rotate-left'(abc))输出(bca)

这是ze代码!

(define (rotate-left LIST)
    (if(null? LIST)'()
        (cons(car LIST)(cons(cdr LIST)'())))))
Run Code Online (Sandbox Code Playgroud)

不幸的是,这只输出相同的列表!应该是一个简单的解决方案我敢肯定,我知道我很接近...感谢您的帮助!

Ósc*_*pez 8

@laser_wizard给出的答案不起作用......这是一个正确的实现 - 您必须将第cons一个替换append为添加列表末尾的第一个元素.

(define (rotate-left LIST)
  (if (null? LIST)
      '()
      (append (cdr LIST)
              (cons (car LIST)
                    '()))))


(rotate-left '(a b c))
> '(b c a)
Run Code Online (Sandbox Code Playgroud)


dav*_*ler -2

你的车和CDR都倒退了!干得好 :

(define (rotate-left LIST)
    (if(null? LIST)'()
        (cons(cdr LIST)(cons(car LIST)'())))))
Run Code Online (Sandbox Code Playgroud)