Append
Encyclopedia
In general, to append is to join or add on to the end of something. For example, an appendix is a section appended (added to the end) of a document.
In computer programming
,
) lists or arrays
in some high-level programming language
s.
. The
s as arguments, and returns the concatenation of these lists.
Since the
are O(n)
for a list of elements. It may thus be a source of inefficiency if used injudiciously in code.
The
: it alters the cdr
of each argument (save the last), pointing it to the next list.
in terms of
Append can also be implemented using fold-right:
s as primitive data structure
s have adopted an
uses the
Other languages use the
/list/array concatenation.
This predicate can be used for appending, but also for picking lists apart. Calling
yields the solutions:
L = [], R = [1, 2, 3] ;
L = [1], R = [2, 3] ;
L = [1, 2], R = [3] ;
L = [1, 2, 3], R = []
, from Hughes (1989:5-6), has the same semantics (by example) as the Scheme implementation above, for two arguments.
append a b = reduce cons b a
Where reduce is Miranda's name for fold
, and cons
constructs a list from two values or lists.
For example,
append [1,2] [3,4] = reduce cons [3,4] [1,2]
= (reduce cons [3,4]) (cons 1 (cons 2 nil))
= cons 1 (cons 2 [3,4]))
(replacing cons by cons and nil by [3,4])
= [1,2,3,4]
has the same effect as the Scheme implementation above:
This is essentially a reimplementation of Haskell's
The end result is a list containing [1, 2, 3]
The unshift function appends to the front of a list, rather than the end
The end result is a list containing [2, 3, 1]
When opening a file, use the ">>" mode to append rather than over write.
Note that when opening and closing file handles, one should always check the return value.
, the list append method can be used in the following way.
The end result is a list containing [1, 2, 3]
The stream "Goodbye world!" is added to the text file written in the first command. The ";" implies the execution of the given commands in order not simultaneously. So, the final content of the text file is:
Hello world!
Goodbye world!
command that allows programs to open data files in specified directories as if they were in the current directory. It appends the directories to the search path list.
In computer programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
,
append
is the name of a procedure for concatenating (linkedLinked list
In computer science, a linked list is a data structure consisting of a group of nodes which together represent a sequence. Under the simplest form, each node is composed of a datum and a reference to the next node in the sequence; more complex variants add additional links...
) lists or arrays
Array data type
In computer science, an array type is a data type that is meant to describe a collection of elements , each selected by one or more indices that can be computed at run time by the program. Such a collection is usually called an array variable, array value, or simply array...
in some high-level programming language
High-level programming language
A high-level programming language is a programming language with strong abstraction from the details of the computer. In comparison to low-level programming languages, it may use natural language elements, be easier to use, or be from the specification of the program, making the process of...
s.
Lisp
Append
originates in the Lisp programming languageLisp programming language
Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older...
. The
append
procedure takes zero or more (linked) listLinked list
In computer science, a linked list is a data structure consisting of a group of nodes which together represent a sequence. Under the simplest form, each node is composed of a datum and a reference to the next node in the sequence; more complex variants add additional links...
s as arguments, and returns the concatenation of these lists.
Since the
append
procedure must completely copy all of its arguments except the last, both its time and space complexityComputational complexity theory
Computational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other...
are O(n)
Big O notation
In mathematics, big O notation is used to describe the limiting behavior of a function when the argument tends towards a particular value or infinity, usually in terms of simpler functions. It is a member of a larger family of notations that is called Landau notation, Bachmann-Landau notation, or...
for a list of elements. It may thus be a source of inefficiency if used injudiciously in code.
The
nconc
procedure (called append!
in Scheme) performs the same function as append
, but destructivelyIn-place algorithm
In computer science, an in-place algorithm is an algorithm which transforms input using a data structure with a small, constant amount of extra storage space. The input is usually overwritten by the output as the algorithm executes...
: it alters the cdr
Car and cdr
car and cdr are primitive operations on cons cells introduced in the Lisp programming language. A cons cell is composed of two pointers; the car operation extracts the first pointer, and the cdr operation extracts the second.Thus, the expression evaluates to x, and evaluates to...
of each argument (save the last), pointing it to the next list.
Implementation
Append
can easily be defined recursivelyRecursion
Recursion is the process of repeating items in a self-similar way. For instance, when the surfaces of two mirrors are exactly parallel with each other the nested images that occur are a form of infinite recursion. The term has a variety of meanings specific to a variety of disciplines ranging from...
in terms of
consConsIn computer programming, cons is a fundamental function in most dialects of the Lisp programming language. cons constructs memory objects which hold two values or pointers to values. These objects are referred to as cells, conses, non-atomic s-expressions , or pairs...
. The following is a simple implementation in Scheme, for two arguments only:Append can also be implemented using fold-right:
Other languages
Following Lisp, other high-level languages which feature linked listLinked list
In computer science, a linked list is a data structure consisting of a group of nodes which together represent a sequence. Under the simplest form, each node is composed of a datum and a reference to the next node in the sequence; more complex variants add additional links...
s as primitive data structure
Data structure
In computer science, a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently.Different kinds of data structures are suited to different kinds of applications, and some are highly specialized to specific tasks...
s have adopted an
append
. HaskellHaskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...
uses the
++
operator to append lists. OCaml uses the @
operator to append lists.Other languages use the
+
or ++
symbols for nondestructive stringString (computer science)
In formal languages, which are used in mathematical logic and theoretical computer science, a string is a finite sequence of symbols that are chosen from a set or alphabet....
/list/array concatenation.
Prolog
The logic programming language Prolog features a built-inappend
predicate, which can be implemented as follows:This predicate can be used for appending, but also for picking lists apart. Calling
yields the solutions:
L = [], R = [1, 2, 3] ;
L = [1], R = [2, 3] ;
L = [1, 2], R = [3] ;
L = [1, 2, 3], R = []
Miranda
This right-foldFold (higher-order function)
In functional programming, fold – also known variously as reduce, accumulate, compress, or inject – are a family of higher-order functions that analyze a recursive data structure and recombine through use of a given combining operation the results of recursively processing its...
, from Hughes (1989:5-6), has the same semantics (by example) as the Scheme implementation above, for two arguments.
append a b = reduce cons b a
Where reduce is Miranda's name for fold
Fold (higher-order function)
In functional programming, fold – also known variously as reduce, accumulate, compress, or inject – are a family of higher-order functions that analyze a recursive data structure and recombine through use of a given combining operation the results of recursively processing its...
, and cons
Cons
In computer programming, cons is a fundamental function in most dialects of the Lisp programming language. cons constructs memory objects which hold two values or pointers to values. These objects are referred to as cells, conses, non-atomic s-expressions , or pairs...
constructs a list from two values or lists.
For example,
append [1,2] [3,4] = reduce cons [3,4] [1,2]
= (reduce cons [3,4]) (cons 1 (cons 2 nil))
= cons 1 (cons 2 [3,4]))
(replacing cons by cons and nil by [3,4])
= [1,2,3,4]
Haskell
This right-foldFold (higher-order function)
In functional programming, fold – also known variously as reduce, accumulate, compress, or inject – are a family of higher-order functions that analyze a recursive data structure and recombine through use of a given combining operation the results of recursively processing its...
has the same effect as the Scheme implementation above:
This is essentially a reimplementation of Haskell's
++
operator.Perl
In Perl, the push function is equivalent to the append method, and can be used in the following way.The end result is a list containing [1, 2, 3]
The unshift function appends to the front of a list, rather than the end
The end result is a list containing [2, 3, 1]
When opening a file, use the ">>" mode to append rather than over write.
Note that when opening and closing file handles, one should always check the return value.
Python
In PythonPython (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
, the list append method can be used in the following way.
The end result is a list containing [1, 2, 3]
Bash
In Bash the append redirect is the usage of ">>" for adding a stream to something, like in the following series of shell commands:The stream "Goodbye world!" is added to the text file written in the first command. The ";" implies the execution of the given commands in order not simultaneously. So, the final content of the text file is:
Hello world!
Goodbye world!
DOS command
append is a DOSDOS
DOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...
command that allows programs to open data files in specified directories as if they were in the current directory. It appends the directories to the search path list.