Append
In computer programming,
append is the operation for concatenating linked lists or arrays in some high-level programming languages.Lisp
Append originates in the programming language Lisp. The append procedure takes zero or more (linked) lists as arguments, and returns the concatenation of these lists.' ' ')
;Output:
Since the
append procedure must completely copy all of its arguments except the last, both its time and space complexity are O(n) for a list of elements. It may thus be a source of inefficiency if used injudiciously in code.The
nconc procedure performs the same function as append, but destructively: it alters the cdr of each argument, pointing it to the next list.Implementation
Append can easily be defined recursively in terms of cons. The following is a simple implementation in Scheme, for two arguments only:ls2
)))
Append can also be implemented using fold-right:
))
Other languages
Following Lisp, other high-level programming languages which feature linked lists as primitive data structures have adopted anappend. To append lists, as an operator, Haskell uses ++, OCaml uses @.Other languages use the
+ or ++ symbols to nondestructively concatenate a string, list, or array.Prolog
The logic programming language Prolog features a built-inappend predicate, which can be implemented as follows:append.
append :-
append.
This predicate can be used for appending, but also for picking lists apart. Calling
?- append.
yields the solutions:
L =, R = ;
L =, R = ;
L =, R = ;
L =, R =
Miranda
In Miranda, this right-fold, from Hughes, has the same semantics 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 = reduce cons
=
= cons 1 )
=
Haskell
In Haskell, this right-fold has the same effect as the Scheme implementation above:append :: -> ->
append xs ys = foldr ys xs
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.my @list;
push @list, 1;
push @list, 2, 3;
The end result is a list containing
The unshift function appends to the front of a list, rather than the end
my @list;
unshift @list, 1;
unshift @list, 2, 3;
The end result is a list containing
When opening a file, use the ">>" mode to append rather than over write.
open;
print $fh "Some new text\n";
close $fh;
Note that when opening and closing file handles, one should always check the return value.
Python
In Python, use the list method or the infix operators and to append lists.>>> l =
>>> l.extend
>>> l
>>> l +
Do not confuse with the list method, which adds a single element to a list:
>>> l =
>>> l.append
>>> l
Bash
In Bash the append redirect is the usage of ">>" for adding a stream to something, like in the following series of shell commands:echo Hello world! >text; echo Goodbye world! >>text; cat text
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: