REBOL 2, Lists

Download Report

Transcript REBOL 2, Lists

REBOL
Lists
REBOL does it differently

Other languages:




Lists (and similar sequences) are singly-linked
head returns the first element of the series
tail returns the remainder of the series, minus the head
REBOL:




Series are doubly-linked, hence traversable in either direction
Any reference to a series is a reference to some position in the
series
head returns the beginning of the series
tail returns the end of the series
2
Traversing a sequence



head returns the beginning of the sequence
tail returns the end of the sequence
next returns the next position in the sequence


back returns the previous position in the sequence



If already at the tail, returns the tail
If already at the head, returns the head
head? tests if a position is the beginning of a sequence
tail? tests if a position is the end of a sequence
3
Example traversals






>>
==
>>
==
>>
==
>>
==
>>
==
>>
==
str: "REBOL"
"REBOL"
mid: next next str
"BOL"
head? mid
false
head mid
"REBOL"
end: tail str
""
back end
"L"
4
Getting elements from a sequence






>>
==
>>
==
>>
==
>>
==
>>
==
>>
==
str: "REBOL"
"REBOL"
first str
#"R"
second str
#"E"
last str
#"L"
pick str 4
#"O"
pick str 8
none
5
Indexing into a sequence






>>
==
>>
==
>>
==
>>
==
>>
==
>>
==
str: "REBOL"
"REBOL"
index? str
1
mid: at str 3
"BOL"
at mid 2
"OL”
at mid -1
"EBOL"
index? at mid -1
2
6
The End
7