On 2017-09-03 12:46:05 +0000, Moritz Maxeiner said:
I'll put in on my ever growing list of things to check out in depth, thanks :p
You're welcome. Don't wait to long ;-)
There is no difference between code & data in Rebol. And it has a very
rich set of datatpye, IIRC about 35 native ones. And many of them are
series, which can be operated in the same way.
Sounds like LISP :)
Yes, some ideas are the same. But the syntax is way more beautyful and useable.
I agree, though I was talking about what the abstract data type of a
"series" is, i.e. what operations is exposes. From my observation:
A D input range exposes via empty/front/popFront.
A classic iterator exposes via begin/end.
A Rebol series seems to be a safer form of iterator, as it doesn't
expose begin/end directly, but exposes restricted operations that are
defined as manipulating begin/end.
The series has elements and a "current pointer" which can be
manipulated. Begin & end are just that, begin and end of the series.
You don't manipulate them directly. Of couse you can change a series by
adding/removing, cutting etc. which then changes begin/end accordingly.
a: [a b c d e f g]
== [a b c d e f g]
a/5
== e
skip a 5
== [f g]
a
== [a b c d e f g]
b: a/5
== e
type? b
== word!
type? a
== block!
b: skip a 5
== [f g]
type? b
== block!
index? b
== 6
head b
== [a b c d e f g]
You can even treat such a block as fixed-size record and operate on
this. Very handy.
--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster