2011-04-12 5 views
2

미리 경고 : 이것은 숙제 문제입니다. 리스트를 뒤집는 Scheme 함수를 작성하려고합니다. '(1 2 3) is'(3 2 1) 등이됩니다.이 작업을 수행하는 미리 정의 된 함수는 사용할 수 없습니다.스키마 목록을 뒤집어 쓰려고 시도합니다.

여기에 내가 쓴 내용이 올바른 것입니까?

;myReverse 
(define (myReverse list) 
    (if (null? list) '() 
     (append (myReverse(cdr list)) car list))) 

감사!

+0

죄송 번호를 전달하는, 내가 출력을 언급하는 것을 잊었다. – Ben

+0

[Scheme의 역순 함수 란 무엇입니까? \ [Q : 역방향 중첩 목록 \]] (http://stackoverflow.com/questions/4092113/what-is-the-reverse-function-in-scheme-q-reverse-nested-list) –

+0

그 스레드는 끔찍한데 (O (N^2)와 같은 냄새가납니다), Scheme이 아니며, 분명히 관용적이지 않습니다. 벤의 숙제를 망쳐 놓지 않기 위해 어딘가에 올바른 답을 달아 드리겠습니다. – wowest

답변

1

글쎄, Scheme은 Lisp-1이기 때문에, list을 이름으로 사용하는 것은 이상 할 것입니다. 대신 lst라고 부릅니다.

foldl, cons, '()lst으로 무엇을 할 수 있는지 생각해보십시오.

1

여기에 내가 쓴 내용이 맞습니까?

예.

  • list이 내장 함수 이름이고, 다른 하나는 실제로이 솔루션에서 사용 할 수 있습니다, 그래서 당신은 아마
  • 당신은 주위에 괄호를 잊었 공식적인 그 이름을 안 : 몇 가지 고려해야 할 car list
  • append에는 두 개의 목록이 필요합니다. 당신이 그것을 목록과

    > (append '(1) 2) 
    (1 . 2) 
    > (append '(1) '(2)) 
    (1 2) 
    
관련 문제