This one-liner illustrates some of the basic series operations.
Before analysing, we'll initiate a block to be manipulated:
stuff: [chair lamp table book carpet]
Now our one-liner:
head insert stuff take back tail stuff
There are five operations within this example, and with each of them it's important to understand that Rebol functions usually return useful values. This allows the functions to be chained into a relatively concise statement.
We'll perform this analysis from right to left:
Rebol block series are similar to arrays in other languages, they're abstract collection with x number of values. However they can also be referenced at various positions—anywhere between the head (before the first value) and the tail (after the last value).
The native tail
will return the block at its tail.
Similarly back
will return the block immediately before its current position. In this case, being at the tail, back
will return the block at the penultimate position.
take
performs two operations—it returns the value immediately after the current position, and simultaneously removes it from the block.
insert
places a value into the block at the current position and returns the block immediately after the placed value. Note that stuff
retains it's position at the beginning of the block—at no point is it reassigned another position—the latter part of the statement (taking the value) is self-contained.
And finally head
returns the beginning of the block. Although the insert
here was used at the beginning of the block, it returns the block one position after the beginning after the value is placed.