On 2017-09-01 20:34:32 +0000, Mark said:
On Tuesday, 29 August 2017 at 12:50:08 UTC, Robert M. Münch wrote:
Maybe of interest: https://www.think-cell.com/en/career/talks/iterators/#1
I haven't read everything, so not sure if it worth to take a look.
Iterators have many problems. Andrei's talk some years ago, titled
"Iterators Must Go", points out many of them in a clear fashion. I
think most of the problems stem from the fact that they are inherently
a leaky abstraction. Iterators basically treat all data structures as a
singly/doubly linked list or as arrays (if they allow random access).
There is no natural or intuitive way of describing, say, a tree or an
arbitrary graph as a list/array. Ranges and cursors try to solve some
of the issues but they still have this fundamental problem.
Iterators are not the silver bullet. But IIRC you can specify if you
want to iterate over a graph BF or DF. If you just need to "iterate"
over the elements things work pretty good IMO. If you want to select a
sub-set and then iterate things get much complicater anyway.
It may be unrealisic to expect such a nice abstraction of iteration for
other data structures, not to mention a universal one which will work
for all interesting data structures.
That's true, hence I didn't ever expected this at all. Some pretty
simple & basic building blocks and the rest is done on-demand fitting
the use-case.
--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster