# Idiom #166 Concatenate two lists

Create list ab containing all the elements of list a, followed by all elements of list b.

```var ab = new ArrayList<>(a);
`(def ab (concat a b))`
```auto ab = a;
ab.insert (ab.end (), b.begin (), b.end ());
```
`System.Linq`
```var list1 = new List<int>(){1,2,3};
var list2 = new List<int>(){4,5,6};

var list3 = list1.Concat(list2);```
```int[] a, b;
auto ab = a ~ b;```
`std.range;`
```int[] a, b;
auto ab = chain(a, b);```
```var a = [1,2,3];
var b = [3,2,4];
var ab = a + b;```
`ab = a ++ b`
`AB = A ++ B.`
```real, dimension(:), allocatable :: ab

ab = [a, b]```
`ab := append(a, b...)`
```ab := make([]T, len(a)+len(b))
copy(ab, a)
copy(ab[len(a):], b)```
```var ab []T
ab = append(append(ab, a...), b...)```
`ab = a ++ b`
`var ab = a.concat(b);`
`(setf ab (append a b))`
```ab = {}

table.foreach(a, function(k, v) table.insert(ab, v) end)
table.foreach(b, function(k, v) table.insert(ab, v) end)```
`\$ab = array_merge(\$a, \$b);`
`classes`
```var
a,b,ab: TList;

...
ab := TList.Create;
ab.Assign(a);
`@ab = (@a, @b)`
`ab = a + b`
`ab = a + b`
`let ab = [a, b].concat();`
`val ab = a ++ b`
`(define ab (append a b))`