728x90
먼저 심볼간의 비교에는 eq 를 사용한다.
1 2 3 4 | [12]> (defparameter *fruit* 'apple) *FRUIT* [12]> (cond ((eq *fruit* 'apple) 'its-an-apple)) ITS-AN-APPLE | cs |
2개의 심볼을 비교하는 게 아니라면 equal 을 사용해라. 이 명령어는 서로 동형인지를 판단해준다.
1) 심볼 및 리스트 비교
1 2 3 4 | [13]> (equal 'apple 'apple) T [13]> (equal (list 1 2 3) (list 1 2 3)) T | cs |
2) 다른 방식으로 생성된 리스트 간 비교도 가능
1 2 3 4 | Break 26 [27]> (cons 1 (cons 2 (cons 3 ()))) (1 2 3) Break 26 [27]> (equal '(1 2 3) (cons 1 (cons 2 (cons 3 ())))) T | cs |
3) 정수, 실수간 비교
1 2 3 4 | Break 27 [28]> (equal 5 5) T Break 27 [28]> (equal 2.5 2.5) T | cs |
4) 문자열 및 문자 비교
1 2 3 4 | Break 28 [29]> (equal "foo" "foo") T Break 28 [29]> (equal #\a #\a) T | cs |
보는 바와 같이, 리스프의 대부분의 아이템은 equal 을 통해 효과적으로 비교가 가능하다.
eq 와 상당히 유사하지만, 그와는 다르게 수와 문자간의 비교가 가능한 eql 에 대해 알아보자. 심볼 뿐만 아니라 수와 문자간 비교도 가능하다.
1 2 3 4 5 6 7 8 | Break 29 [30]> (eql 'foo 'foo) T Break 29 [30]> (eql 3.4 3.4) T Break 29 [30]> (eql #\a #\a) T Break 29 [30]> | cs |
그리고 equal과 유사한 equalp 라는 명령어도 있다. 다음의 예를 보자. equalp는 대문자 사용방식이 다른 경우 및 정수와 실수간 비교가 가능하다.
1 2 3 4 5 6 7 | Break 30 [31]> (equalp "Bob Smith" "bob smith") T Break 30 [31]> (equalp 0 0.0) T Break 30 [31]> | cs |
728x90
'프로그래밍 Programming' 카테고리의 다른 글
Getting Started with CLISP (17) - 텍스트 출력 및 읽기 Printing and Reading Text (0) | 2017.11.04 |
---|---|
Getting Started with CLISP (16) - 텍스트 게임 엔진 만들기 Building a text game engine (0) | 2017.11.02 |
Getting Started with CLISP (14) - Cool Tricks with Conditions (0) | 2017.10.25 |
host 명령을 이용한 DNS 스캔 (0) | 2017.10.23 |
게스트 OS 와 VirtualBox 공유폴더 설정하기 Share Folders between Host and Guest OS in VirtualBox (0) | 2017.10.23 |