"bearophile" , dans le message (digitalmars.D:168160), a écrit : > deadalnix: >>>> http://blog.thebird.nl/?p=93 >>>... >> I spreaded the word. This article is great and I 100% agree >> with it :D > > The article says: > >>There are a few things I miss in D. For example pattern >>recognition on unpacking data, which is great in Haskell, >>Erlang, and Scala (see example >>[http://www.scala-lang.org/node/120 ]).< > > The author of that article has missed that D lacks something much > simpler than pattern matching, and even more commonly useful. > Currently in D you have to write something like: > > int[2][] directions = [[-1, 0], [1, 0], [0, -1], [0, 1]]; > foreach (sx_sy; directions) { > immutable sx = sx_sy[0]; > immutable sy = sx_sy[1]; > // code that uses sx and sy > > > While a less clunky language allows you to unpack them better, > something like: > > auto directions = [tuple(-1, 0), tuple(1, 0), tuple(0, -1), > tuple(0, 1)]; > foreach (immutable (sx, sy); directions) { > // code that uses sx and sy > > > If you use tuples, you want to unpack them often, it's a basic > operation on tuples.
This little example raises a question if tuples becomes part of the langage. Should static array have tuple capabilities ? Besides that, it is easy to emulate your example with a little library solution. Maybe something like that should be added to std.range. -- Christophe
