[ library(lists) | Reference Manual | Alphabetic Index ]

# splice(?Odds, ?Evens, ?List)

Merge two lists by interleaving the elements
Odds
List or variable
Evens
List or variable
List
Variable or list

## Description

Create a new list by alternating elements from two input lists, starting with the first. When one input list is longer, its extra elements form the tail of the result list.

The reverse mode splice(-,-,+) is nondeterministic, and the most balanced solution(s) will be found first.

### Modes and Determinism

• splice(+, +, -) is det
• splice(-, -, +) is multi

## Examples

```?- splice([1,2,3], [a,b,c], X).
X = [1, a, 2, b, 3, c]
Yes (0.00s cpu)

?- splice([1,2,3], [a,b,c,d,e], X).
X = [1, a, 2, b, 3, c, d, e]
Yes (0.00s cpu)

?- splice(A, B, [1,a,2,b,3,c]).
A = [1, 2, 3]
B = [a, b, c]
More (0.00s cpu) ? ;
A = [1, 2, 3, c]
B = [a, b]
More (0.00s cpu) ? ;
A = [1, 2]
B = [a, b, 3, c]
More (0.00s cpu) ? ;
A = [1, 2, b, 3, c]
B = [a]
More (0.00s cpu) ? ;
A = [1]
B = [a, 2, b, 3, c]
More (0.00s cpu) ? ;
A = [1, a, 2, b, 3, c]
B = []
More (0.00s cpu) ? ;
A = []
B = [1, a, 2, b, 3, c]
Yes (0.00s cpu)
```