AppendIn computer programming, Lisp
(append '(1 2 3) '(a b) '() '(6))
;Output: (1 2 3 a b 6)
Since the The Implementation
(define append
(lambda (ls1 ls2)
(if (null? ls1)
ls2
(cons (car ls1) (append (cdr ls1) ls2)))))
Append can also be implemented using fold-right: (define append
(lambda (a b)
(fold-right cons b a)))
Other languagesFollowing Lisp, other high-level programming languages which feature linked lists as primitive data structures have adopted an Other languages use the PrologThe logic programming language Prolog features a built-in append([],Ys,Ys).
append([X|Xs],Ys,[X|Zs]) :-
append(Xs,Ys,Zs).
This predicate can be used for appending, but also for picking lists apart. Calling ?- append(L,R,[1,2,3]).
yields the solutions: L = [], R = [1, 2, 3] ; L = [1], R = [2, 3] ; L = [1, 2], R = [3] ; L = [1, 2, 3], R = [] MirandaIn Miranda, this right-fold, 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] HaskellIn Haskell, this right-fold has the same effect as the Scheme implementation above: append :: [a] -> [a] -> [a]
append xs ys = foldr (:) ys xs
This is essentially a reimplementation of Haskell's PerlIn 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 [1, 2, 3] 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 [2, 3, 1] When opening a file, use the ">>" mode to append rather than over write. open(my $fh, '>>', "/some/file.txt");
print $fh "Some new text\n";
close $fh;
Note that when opening and closing file handles, one should always check the return value. PythonIn Python, use the list method >>> l = [1, 2]
>>> l.extend([3, 4, 5])
>>> l
[1, 2, 3, 4, 5]
>>> l + [6, 7]
[1, 2, 3, 4, 5, 6, 7]
Do not confuse with the list method >>> l = [1, 2]
>>> l.append(3)
>>> l
[1, 2, 3]
BashIn 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: Hello world!
Goodbye world!
References
|