2014-11-29 3 views
1

함수의 논리는 무엇입니까 merge?Common Lisp의 MERGE 함수에 대해서

판단이 true를 반환하면 list1의 첫 번째 요소를 선택하거나 false이면 list2를 선택하지 않습니까?

I는 다음 두 문장 혼동 하였다 ...

('에서'1 '(2) #'< 병합) ==> (1/2)

(병합 '목록 '(1)'(2) # '=) ==> (1 2)

왜 같은 결과가 나옵니까?

답변

3

merge의 결과는 모두 두 시퀀스의 요소를 포함합니다.

술어가 T이면 첫 x 째 요소가 맨 앞에 놓입니다. merge

CL-USER 57 > (merge 'list 
        (list 1 2) 
        (list 2 1) 
        #'<) 
(1 2 2 1) 

CL-USER 58 > (merge 'list 
        (list 1 2) 
        (list 2 1) 
        #'=) 
(1 2 2 1) 

CL-USER 59 > (merge 'list 
        (list 1 2) 
        (list 2 1) 
        #'>) 
(2 1 2 1) 

기본 유스 케이스 두 정렬 된 서열을 병합하는 모든 요소를 ​​포함하는 하나의 정렬 순서로 발생한다. 너무 벡터

CL-USER 63 > (merge 'list 
        '(1 2 6) 
        '(3 4 5) 
        #'<) 
(1 2 3 4 5 6) 

작품 :

CL-USER 64 > (merge 'vector 
        #(1 2 6) 
        #(3 4 5) 
        #'<) 
#(1 2 3 4 5 6) 
+1

이 기능이 병합 정렬처럼 병합되어 있습니까? 각 목록의 두 주먹 요소 사이에 술어가 적용됩니까? – chaosink

+0

@chaosink : 'merge'의 기본 사용 예는 두 개의 정렬 된 목록을 병합하여 두 목록의 모든 요소를 ​​포함하는 정렬 된 결과 목록을 작성하는 것입니다. –

관련 문제