추가

Append

컴퓨터 프로그래밍에서 는 일부 고급 프로그래밍 언어로 링크된 목록 또는 배열을 연결하는 연산입니다.

리스프

Append리스프 프로그래밍 언어에서 유래합니다.appendprocedure는 0개 이상의 (링크된) 목록을 인수로 사용하고 이러한 목록의 연결을 반환합니다.

(추가하다 '(1 2 3) '(a b) '() '(6)) ;출력: (1 2 3 a b 6 ) 

그 이후로는append마지막을 제외한 모든 인수를 완전히 복사해야 합니다 n개의 \n 요소 에 대한 시간과 공간의 복잡도는 모두 O(n)입니다.따라서 코드 내에서 부적절하게 사용하면 비효율의 원인이 될 수 있습니다.

nconc프로시저(호출)append!구성표)는 다음과 같은 기능을 수행합니다.append, 파괴적: 각 인수의 cdr을 변경하여(마지막을 저장), 다음 목록을 가리킵니다.

실행

Append관점에서 쉽게 재귀적으로 정의할 수 있다cons다음은 2개의 인수에 한하여 Scheme의 간단한 구현입니다.

(정의하다추가하다   (람다(ls1 ls2)     (한다면(특수 절차입니까?ls1)       ls2       (단점(ls1) (추가하다(CDRls1) ls2))))) 

오른쪽 접기 기능을 사용하여 추가할 수도 있습니다.

(정의하다추가하다    (람다(a b)       (오른쪽 접기 단점 b a))) 

기타 언어

Lisp에 이어 링크목록을 원시 데이터 구조로서 특징짓는 다른 상위 레벨 언어들이 채택되었습니다.appendHaskell은++연산자를 사용하여 목록을 추가합니다.OCaml은@연산자를 사용하여 목록을 추가합니다.

다른 언어에서는+또는++비파괴 문자열/목록/배열 연결 기호.

프롤로그

로직 프로그래밍 언어 Prolog는 내장되어 있습니다.append술어는 다음과 같이 구현할 수 있습니다.

추가하다([],YS,YS). 추가하다([X Xs],YS,[X Zs]) :-     추가하다(Xs,YS,Zs). 

이 술어는 추가에 사용할 수 있지만 목록을 분리할 때도 사용할 수 있습니다.부르기

 ?- 추가하다(L,R,[1,2,3]). 

솔루션을 제공합니다.

L = [], R = [1, 2, 3], L = [1], R = [2, 3], L = [1, 2], R = [3], L = [1, 2, 3], R = []

미란다

Hughes(1989:5-6)의 이 오른쪽 폴더는 두 개의 인수에 대해 위의 체계 구현과 동일한 의미론을 가집니다(예:).

a b = cons b a를 추가하다

여기서 reduce는 접기라는 미란다의 이름으로, cons는 두 가지 값 또는 목록에서 목록을 구성합니다.

예를들면,

추가 [1,2] [3,4] = 반대[3,4] [1,2] = 반대[3,4] = 반대[1] (단점 2 영) = 반대[3,4] (단점 2 영) = 반대[1,2,3,4]

하스켈

이 오른쪽 폴더는 위의 스킴 구현과 동일한 효과를 가집니다.

추가하다 :: [a] -> [a] -> [a] 추가하다 xs ys = 폴더 (:) ys xs 

이것은 본질적으로 Haskell의 재실현이다.++교환입니다.

Perl에서는 push 함수는 append 메서드와 동등하며 다음과 같은 방법으로 사용할 수 있습니다.

나의 @list; 밀다 @list, 1; 밀다 @list, 2, 3; 

최종 결과는 [1, 2, 3]을 포함하는 목록입니다.

이동 해제 함수는 끝 대신 목록 맨 앞에 추가됩니다.

나의 @list; 이동하지 않다 @list, 1; 이동하지 않다 @list, 2, 3; 

최종 결과는 [2, 3, 1]을 포함하는 목록입니다.

파일을 열 때 ">" 모드를 사용하여 덮어쓰기가 아니라 추가합니다.

열다.(나의 fh달러, '>>', "/some/file.txt"); 인쇄물 fh달러 "새로운 텍스트\n"; 가까운. fh달러; 

파일 핸들을 열고 닫을 때는 항상 반환 값을 확인해야 합니다.

파이썬

Python의 경우 목록 메서드 "syslog" 또는 infix 연산자 + 및 +=를 사용하여 목록을 추가합니다.

l = [1, 2] l.확장하다([3, 4, 5]) 인쇄물 l + [6, 7] 

이 코드를 실행한 후 l은 [1, 2, 3, 4, 5]를 포함하는 리스트가 되고 생성되는 출력은 [1, 2, 3, 4, 5, 6, 7]이 됩니다.

목록에 단일 요소를 추가하는 목록 메서드 "append"와 혼동하지 마십시오.

l = [1, 2] l.추가하다(3) 

여기서 결과는 [1, 2, 3]을 포함하는 목록입니다.

배쉬

Bash에서 append redirect는 다음과 같은 일련의 셸 명령에서 스트림을 추가하기 위한 ">>" 사용입니다.

에코 헬로 월드!문자, 에코 Goodbye world!텍스트; cat 텍스트

스트림 "Goodbye world!"는 첫 번째 명령어로 작성된 텍스트 파일에 추가됩니다.";"는 동시에 실행하지 않기 위해 지정된 명령어의 실행을 의미합니다.텍스트 파일의 마지막 내용은 다음과 같습니다.

Hello world!
Goodbye world!

레퍼런스

  • 휴즈, 존 1989년기능 프로그래밍이 중요한 이유컴퓨터 저널 32, 2, 98-198.www.math.chalmers.se/://www.math.chalmers.se/~rjmh/Papers/whyfp.pdf
  • 스틸, 가이 L. 주니어일반적인 리스프: 언어, 제2판1990. 페이지 418, 설명append.