On 01/26/2011 01:56 PM, bearophile wrote:
Now and then I try to use the std.algorithm/std.range parts of Phobos2 to see
how they are going and developing.
Here I have found Python3 code to compute the Pascal triangle:
[...]
Some notes on the D2 version:
1) In Python I am used to think of higher order functions like map, filter, and
zip as similar things. But in Phobos zip is in std.range while map is in
std.algorithm. I think this different placement is bad.
Why? zip is imo clearly a "sequential" function; belongs where it is.
An alternative may be to have a more type-oriented organisation of Phobos:
then, all algorithms oerating on ranges (many) would be placed in std.range.
4) In the Python2 version if I print using the pretty print module:
from pprint import pprint
pprint(pascal_triangle(5), width=20)
The triangle gets visualized like this:
[[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1]]
A function like pprint() will be useful in std.string of Phobos2 too, to give a
more readable printing. It's useful to print 2D arrays, arrays of dicts, etc,
in a more readable way.
Agreed. I very often write and use tree-like output.
As an alternative, I would even like a recursive treeView func/method on all
aggregate types (arrays, AAs, strucs & classes). Producing eg:
aPoint:
tag: "foo"
color:
r: 11
g: 22
b: 33
position:
x: 1
y: 2
with optional separators ',' & delimitors () [] {}.
Denis
--
_________________
vita es estrany
spir.wikidot.com