Scheme 언어 함수 간단한 질문이 있습니다.

kugar의 이미지

(define (y s lis)
(cond
((null? lis) '() )
((equal? s (car lis)) lis)
(else (y s (cdr lis)))
))

null? 부분에서 lis가 null일 경우,
equal? 부분에서 lis의 첫번째 항목이 s와 같을경우 어떻게 한다는 것인지 이해가 잘 안되네요..

null?과 equal?이 만족할경우 어떻게 되는건가요??

bacon의 이미지


(define (y s lis)
     (cond
          ((null? lis) '()) ; lis가 비어 있어면 nil리턴
          ((equal? s (car lis)) lis)  ; s가 lis의 첫째값과 같으면 lis리턴
          (else (y s (cdr lis))) ;아니면 lis의 첫째를 제외한 나머지 값으로 y를 다시 호출
     )
)
 
(y 10 '(10 20 30)) ; (10 20 30) 리턴
(y 20 '(10 20 30)) ; (20 30)리턴
(y 30 '(10 20 30)) ; (30)리턴
(y 40 '(10 20 30)) ; ()리턴
kugar의 이미지

이런 유형의 문제가 많아서 헤맸는데 덕분에 과제하기가 한결 수월해졌습니다 감사합니다~

익명 사용자의 이미지

널이면 빈 리스트(닐)
S면 s의 뒷 리스트
특정 리스트에서 특정값의 뒷부분만 추출하는 함수네요

kugar의 이미지

Scheme언어에서는 null 리스트를 닐이라고 하나보네요?? 감사합니다 ㅎㅎ