게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

두 물건이 같은지 비교하는 방법

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2010)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
김진영_



가입: 2009년 12월 9일
올린 글: 337

올리기올려짐: 2010년9월14일 14:29    주제: 두 물건이 같은지 비교하는 방법 인용과 함께 답변

다음 시간에 실습할 내용이지만 숙제에 도움이 될까 하여 올려 봅니다.


= 연산은 수에 대해서만 정의가 되어 있습니다. 예를 들어

코드:
(= (+ 1 2 3) (* 1 2 3))
(= 3.14 3.141592)


와 같은 사용은 가능하지만, 아래처럼

코드:
(= 'z 'z)


와 같은 사용은 불가능합니다.


수가 아닌 '물건' (object)들이 서로 같은지 다른지를 알기 위해서는

코드:
eqv?
eq?
equal?


와 같은 함수를 이용하면 됩니다. 세 가지나 있는 이유는, '같다'에 대한 정의가 모두 다르기 때문입니다.

일반적으로 eq?가 가장 세밀하게 비교하고, equal?이 가장 관대하게 비교한다고 볼 수 있습니다. 엄밀하지는 않으나 개념적으로 이해하기 쉽게 설명해 보면, eq?는 '정말로' 두 물건이 같다고 할 수 있을 때만 같다고 보는 반면, equal?은 두 물건이 같아 보이는(출력하면 같게 출력되는) 것도 같다고 인정해 줍니다. 아래의 예를 참고하세요.

코드:
(define lst1 '(1 2))
(define lst2 '(1 2))
(eq? lst1 lst2)
; #f
(equal? lst1 lst2)
; #t



보다 자세한 specification은 아래 문서를 참조하시고, 직접 여러 물건들을 비교해 보시면서 익혀 보시기 바랍니다.

http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Equivalence-Predicates.html
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2010) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay