Re: Compile time iota

2015-01-30 Thread Martin Nowak via Digitalmars-d
On Friday, 30 January 2015 at 14:58:14 UTC, Andrei Alexandrescu 
wrote:
I think we need to promote the best of the breed into the 
standard library. -- Andrei


True that for anything not too subjective (XML, json, streams), 
but for frameworks it might be healthier to leave decisions open. 
And we shouldn't hurry with choosing libraries. Some real-world 
testing and some alternative implementations are good for natural 
selection.


Re: Compile time iota

2015-01-30 Thread Andrei Alexandrescu via Digitalmars-d

On 1/30/15 9:17 PM, Dicebot wrote:

On Friday, 30 January 2015 at 14:58:14 UTC, Andrei Alexandrescu wrote:

On 1/30/15 5:41 AM, Martin Nowak wrote:


Leave the better part of this to freestanding libraries, they prosper
much better.

14 database drivers
http://code.dlang.org/?sort=updatedcategory=library.database
24 networking libraries
http://code.dlang.org/?sort=updatedcategory=library.network
5 JSON libraries
http://code.dlang.org/search?q=json

A lot of them are quite good and it has become really simple to write a
nice library that is well tested and documented.
I try to maintain this library as state-of-the-art D project
with dub, ddox, travis-ci and doveralls integration.

https://github.com/MartinNowak/bloom


I think we need to promote the best of the breed into the standard
library. -- Andrei


Most of those are much better were they are.


Clearly this is a matter in which reasonable people can disagree. It is 
my opinion that more functionality in the standard library is the right 
strategy for D.


Andrei



Re: Compile time iota

2015-01-30 Thread Dicebot via Digitalmars-d
On Friday, 30 January 2015 at 14:58:14 UTC, Andrei Alexandrescu 
wrote:

On 1/30/15 5:41 AM, Martin Nowak wrote:


Leave the better part of this to freestanding libraries, they 
prosper

much better.

14 database drivers
http://code.dlang.org/?sort=updatedcategory=library.database
24 networking libraries
http://code.dlang.org/?sort=updatedcategory=library.network
5 JSON libraries
http://code.dlang.org/search?q=json

A lot of them are quite good and it has become really simple 
to write a

nice library that is well tested and documented.
I try to maintain this library as state-of-the-art D project
with dub, ddox, travis-ci and doveralls integration.

https://github.com/MartinNowak/bloom


I think we need to promote the best of the breed into the 
standard library. -- Andrei


Most of those are much better were they are.


Re: Compile time iota

2015-01-30 Thread Dicebot via Digitalmars-d
On Saturday, 31 January 2015 at 05:50:26 UTC, Andrei Alexandrescu 
wrote:
Clearly this is a matter in which reasonable people can 
disagree. It is my opinion that more functionality in the 
standard library is the right strategy for D.


Andrei


Some functionality is more functional than others :) There is lot 
of good stuff missing in Phobos but turning it into kitchen sink 
mess does not seem a good idea. Also relevant : my remark about 
GUI lib in Phobos : 
http://forum.dlang.org/post/wrwwtzxcohgarqsnf...@forum.dlang.org


I think we should aim to include dub into 2.068 standard 
distribution to make people more aware of all good stuff.


Re: Compile time iota

2015-01-30 Thread deadalnix via Digitalmars-d

On Thursday, 22 January 2015 at 22:39:12 UTC, Dicebot wrote:
Things like std.typetuple, while not being as broken as 
std.json implementation-wise, deal good amount of damage being 
a technical debt. It simply unpleasant to build anything on top 
of it and Phobos lacks quite many metaprogramming utilities. It 
is also a small but important step in simplifying related 
learning curve.


I agree it shouldn't be considered a priority but if there is a 
work done already there - why not?


It is funny how some thing come up again and again. Literally 
everybody is confused as hell by tuples for ages.


As for json, Adam had some very nice work done on this. I'd love 
to see what he did become part of std.json (or something similar 
interfacewize).


Re: Compile time iota

2015-01-30 Thread Andrei Alexandrescu via Digitalmars-d

On 1/30/15 10:17 PM, Dicebot wrote:

On Saturday, 31 January 2015 at 05:50:26 UTC, Andrei Alexandrescu wrote:

Clearly this is a matter in which reasonable people can disagree. It
is my opinion that more functionality in the standard library is the
right strategy for D.

Andrei


Some functionality is more functional than others :) There is lot of
good stuff missing in Phobos but turning it into kitchen sink mess does
not seem a good idea.


So... you just repeated your opinion. Should I also repeat mine?


Also relevant : my remark about GUI lib in Phobos
: http://forum.dlang.org/post/wrwwtzxcohgarqsnf...@forum.dlang.org


GUI is big enough to be too challenging.


I think we should aim to include dub into 2.068 standard distribution to
make people more aware of all good stuff.


That may be getting somewhere.


Andrei



Re: Compile time iota

2015-01-30 Thread Dicebot via Digitalmars-d
On Saturday, 31 January 2015 at 07:17:00 UTC, Andrei Alexandrescu 
wrote:
Some functionality is more functional than others :) There is 
lot of
good stuff missing in Phobos but turning it into kitchen sink 
mess does

not seem a good idea.


So... you just repeated your opinion. Should I also repeat mine?


I think you have just done it already, indirectly :P

Sorry, I simply wasn't sure if it is just the wording or you 
really stand by this opinion currently - if latter is the case, 
so be it :)


Re: Compile time iota

2015-01-30 Thread Andrei Alexandrescu via Digitalmars-d

On 1/30/15 5:41 AM, Martin Nowak wrote:


Leave the better part of this to freestanding libraries, they prosper
much better.

14 database drivers
http://code.dlang.org/?sort=updatedcategory=library.database
24 networking libraries
http://code.dlang.org/?sort=updatedcategory=library.network
5 JSON libraries
http://code.dlang.org/search?q=json

A lot of them are quite good and it has become really simple to write a
nice library that is well tested and documented.
I try to maintain this library as state-of-the-art D project
with dub, ddox, travis-ci and doveralls integration.

https://github.com/MartinNowak/bloom


I think we need to promote the best of the breed into the standard 
library. -- Andrei




Re: Compile time iota

2015-01-30 Thread Martin Nowak via Digitalmars-d

On 01/22/2015 10:21 PM, Andrei Alexandrescu wrote:

While working on the new site menus I was copying std modules by hand -
and boy, there's just so much work to be done. Streams, json, encoding,
mmfile, outbuffer, signals, socket, socketstream, xml, zip - all that
stuff, maybe a third of the standard library packages, are /known/ to be
in need of a good revamp (ranging from better documenting to refactoring
to improving to completely rewriting) yet recently a lot of work has
been spent on renaming, splitting, ... - shuffling the rubble in the
garden, especially parts that are already good: container, algorithm,
range, typecons.

Moreover, there's a ton of brand new work to be done! We don't have
standard decent wrappers for libevent or libarchive, networking
protocols, web servers, databases, and just a ton of other things.


Leave the better part of this to freestanding libraries, they prosper 
much better.


14 database drivers
http://code.dlang.org/?sort=updatedcategory=library.database
24 networking libraries
http://code.dlang.org/?sort=updatedcategory=library.network
5 JSON libraries
http://code.dlang.org/search?q=json

A lot of them are quite good and it has become really simple to write a 
nice library that is well tested and documented.

I try to maintain this library as state-of-the-art D project
with dub, ddox, travis-ci and doveralls integration.

https://github.com/MartinNowak/bloom



Re: Compile time iota

2015-01-24 Thread Dicebot via Digitalmars-d
Thanks, I have copied your comments to PR to keep it all in one 
place.


Re: Compile time iota

2015-01-23 Thread Andrei Alexandrescu via Digitalmars-d

On 1/23/15 7:21 AM, Dicebot wrote:

So, to put it clear : do you approve merging
https://github.com/D-Programming-Language/phobos/pull/2687 in general?
(without any details about actual std.meta module layout etc). Assuming
that old std.typetuple will be kept deprecated and (eventually) hidden
from docs without removal for a very long time of course.


I made a pass through the entire document and discussion and it seems to 
need a few improvements before being pulled.


The main issues I see are (a) the names changed from a confusing word to 
a confusing idiom; (b) the Pack template, probably the one thing that 
could add value to the establishment, is private.


So in the bad old times we had this confusing name Typelist in 
std.typelist and some okay/meh names like staticMap and staticIndexOf.


With the new coolness std.typelist.Typelist is std.meta.list.List. That 
is confusing if used standalone as List after importing 
std.meta.list and a good mouthful to use with full qualification, so 
the following idiom is proposed:


import meta = std.meta.list;

This doesn't sound good. If one is in the need for some list-specific 
stuff, how come they have to import std.meta.list and then call it meta? 
Does one ever use import container = std.container.array?


Also there's only std.meta.list and no other std.meta.xxx. Is there a 
plan there?


Why not use packages etc? Just define TemplateList and TemplatePack in 
std.meta and call it a day.



Andrei



Re: Compile time iota

2015-01-23 Thread Dicebot via Digitalmars-d
On Friday, 23 January 2015 at 00:52:33 UTC, Andrei Alexandrescu 
wrote:

On 1/22/15 2:39 PM, Dicebot wrote:
Things like std.typetuple, while not being as broken as 
std.json
implementation-wise, deal good amount of damage being a 
technical debt.
It simply unpleasant to build anything on top of it and Phobos 
lacks
quite many metaprogramming utilities. It is also a small but 
important

step in simplifying related learning curve.

I agree it shouldn't be considered a priority but if there is 
a work

done already there - why not?


I agree! And... I was afraid you were going to say all that. -- 
Andrei


Sorry, I don't understand what I have done wrong this time :)

So, to put it clear : do you approve merging 
https://github.com/D-Programming-Language/phobos/pull/2687 in 
general? (without any details about actual std.meta module layout 
etc). Assuming that old std.typetuple will be kept deprecated and 
(eventually) hidden from docs without removal for a very long 
time of course.


Re: Compile time iota

2015-01-22 Thread Dicebot via Digitalmars-d
On Thursday, 22 January 2015 at 13:06:26 UTC, Nick Treleaven 
wrote:

On 21/01/2015 19:15, zeljkog wrote:
And good name staticIota, unlike TypeTuple. I always wonder 
what is raw

tuple, TypeTuple or Tuple :)


Yes, there's a DIP to rename std.typetuple to std.meta.list. I 
made a pull to do that (which goes further than the DIP), but I 
don't know if the deprecation/disruption will be acceptable. If 
not, perhaps we could just add a better named alias for 
TypeTuple (e.g. MetaTuple) but keep the same module name. I 
don't think the status quo is really acceptable.


(In fact, I don't agree with removing deprecated symbols unless 
they are actually buggy - this is what GTK does. If we kept 
them there would be less friction and less cause not to 
deprecate things which are problematic).


Ah, great, now I am least sure that you and ntrel are the same 
person :) Fate of your pull and DIP in general is in Andrei hands 
- but, as he has mentioned in this thread, his mailbox queue is 
not easy to deal with. So right now can't really do anything but 
sit and wait.


Re: Compile time iota

2015-01-22 Thread zeljkog via Digitalmars-d

On 22.01.15 14:06, Nick Treleaven wrote:

On 21/01/2015 19:15, zeljkog wrote:

And good name staticIota, unlike TypeTuple. I always wonder what is raw
tuple, TypeTuple or Tuple :)


Yes, there's a DIP to rename std.typetuple to std.meta.list. I made a
pull to do that (which goes further than the DIP), but I don't know if
the deprecation/disruption will be acceptable. If not, perhaps we could
just add a better named alias for TypeTuple (e.g. MetaTuple) but keep
the same module name. I don't think the status quo is really acceptable.



Maybe RawTuple or CtTuple?
Descriptive and As Short As Possible :)



Re: Compile time iota

2015-01-22 Thread Nick Treleaven via Digitalmars-d

On 21/01/2015 19:15, zeljkog wrote:

And good name staticIota, unlike TypeTuple. I always wonder what is raw
tuple, TypeTuple or Tuple :)


Yes, there's a DIP to rename std.typetuple to std.meta.list. I made a 
pull to do that (which goes further than the DIP), but I don't know if 
the deprecation/disruption will be acceptable. If not, perhaps we could 
just add a better named alias for TypeTuple (e.g. MetaTuple) but keep 
the same module name. I don't think the status quo is really acceptable.


(In fact, I don't agree with removing deprecated symbols unless they are 
actually buggy - this is what GTK does. If we kept them there would be 
less friction and less cause not to deprecate things which are problematic).


Re: Compile time iota

2015-01-22 Thread Andrei Alexandrescu via Digitalmars-d

On 1/22/15 5:08 AM, Dicebot wrote:

On Thursday, 22 January 2015 at 13:06:26 UTC, Nick Treleaven wrote:

On 21/01/2015 19:15, zeljkog wrote:

And good name staticIota, unlike TypeTuple. I always wonder what is raw
tuple, TypeTuple or Tuple :)


Yes, there's a DIP to rename std.typetuple to std.meta.list. I made a
pull to do that (which goes further than the DIP), but I don't know if
the deprecation/disruption will be acceptable. If not, perhaps we
could just add a better named alias for TypeTuple (e.g. MetaTuple) but
keep the same module name. I don't think the status quo is really
acceptable.

(In fact, I don't agree with removing deprecated symbols unless they
are actually buggy - this is what GTK does. If we kept them there
would be less friction and less cause not to deprecate things which
are problematic).


Ah, great, now I am least sure that you and ntrel are the same person :)
Fate of your pull and DIP in general is in Andrei hands - but, as he has
mentioned in this thread, his mailbox queue is not easy to deal with. So
right now can't really do anything but sit and wait.


I'm ambivalent about this; I think it could go either way without making 
a huge impact. (BTW I like GTK's idea to keep the old names around. They 
could be marginalized in the documentation but still allow older 
programs to build.)


I'm more worried about another trend though (only loosely related to 
this particular one). I might talk about that tonight.ñ


While working on the new site menus I was copying std modules by hand - 
and boy, there's just so much work to be done. Streams, json, encoding, 
mmfile, outbuffer, signals, socket, socketstream, xml, zip - all that 
stuff, maybe a third of the standard library packages, are /known/ to be 
in need of a good revamp (ranging from better documenting to refactoring 
to improving to completely rewriting) yet recently a lot of work has 
been spent on renaming, splitting, ... - shuffling the rubble in the 
garden, especially parts that are already good: container, algorithm, 
range, typecons.


Moreover, there's a ton of brand new work to be done! We don't have 
standard decent wrappers for libevent or libarchive, networking 
protocols, web servers, databases, and just a ton of other things.


I hypothesize much of it is because a small improvement to something 
that's already good is easier to push past review; what's there works, 
the new stuff is even nicer - game, set, and match. Pull merged. In 
contrast, embarking on a significant new work is likely to receive a lot 
more scrutiny and criticism.


This might be because an asymmetry: we have a high bar for reviews and a 
good process in place, but no strong enough large submissions to make it 
past it. As a consequence our current dynamics optimizes for small 
improvements of already working code.


In WWI, the advent of mounted machine guns created a large asymmetry 
between defense and offense: defense was much more effective than 
offense, which led to the trench stalemate. It seems to me we have an 
asymmetry between the review process and the strength of potential 
submissions. The WWI stalemate was broken by the invention of the tank. 
We apparently need an equivalent of it :o).


===

Take a look at 
https://github.com/D-Programming-Language/phobos/pull/2687/files. So we 
have a bunch of replacements like TypeTuple to meta.List and 
allSatisfy to meta.all. Are the new names nicer? Arguably. I like 
them! Do they improve things? I guess. There'd be less confusion about 
TypeTuple not always containing types etc, which does matter. Will they 
have an important contribution to the adoption of D? Very, very little 
if at all, especially compared with the opportunity costs: all the good 
work that WASN'T done by the talented contributors involved while they 
were busy renaming things.


That said https://github.com/D-Programming-Language/phobos/pull/2687 
will probably get pulled. Why? Because it's sensible, and because it's 
there. It's the sensible, okay work that I'm most worried about, even 
more than bad work.


Bad work is visibly undesirable so it won't get far. The problem with 
okay work is it does get implemented and pulled, so it takes away time 
from the great work that does make a difference.



Andrei



Re: Compile time iota

2015-01-22 Thread Dicebot via Digitalmars-d
Things like std.typetuple, while not being as broken as std.json 
implementation-wise, deal good amount of damage being a technical 
debt. It simply unpleasant to build anything on top of it and 
Phobos lacks quite many metaprogramming utilities. It is also a 
small but important step in simplifying related learning curve.


I agree it shouldn't be considered a priority but if there is a 
work done already there - why not?


Re: Compile time iota

2015-01-22 Thread Jakob Ovrum via Digitalmars-d
On Wednesday, 21 January 2015 at 18:26:11 UTC, H. S. Teoh via 
Digitalmars-d wrote:
On Wed, Jan 21, 2015 at 07:14:09PM +0100, zeljkog via 
Digitalmars-d wrote:


Maybe something like this can be added to Fobos:

template Iota(int start, int stop, int step = 1){
template tuple(T...){
alias tuple = T;
}
static if(start  stop)
alias Iota = tuple!(start, Iota!(start + step, stop, 
step));

else
alias Iota = tuple!();
}


This is actually already implemented as 
std.typecons.staticIota, but
it's currently undocumented and restricted to only Phobos code. 
I'm not
sure why it was decided not to make it public, but if you file 
an
enhancement request, the devs can look at it and decide if it's 
worth

making it public.


T


There was a PR to make `staticIota` public, but it was superceded 
by a more general `toTypeTuple`[1] that works with any CTFE-able 
range, including the titular `iota`. It too was eventually 
closed, this time because of the whole naming situation. It's an 
unfortunate situation, but now that we've come this far, I think 
the way forward is to go ahead and try to get the std.meta rename 
merged.


[1] https://github.com/D-Programming-Language/phobos/pull/1472


Re: Compile time iota

2015-01-22 Thread Meta via Digitalmars-d
On Thursday, 22 January 2015 at 13:06:26 UTC, Nick Treleaven 
wrote:

On 21/01/2015 19:15, zeljkog wrote:
And good name staticIota, unlike TypeTuple. I always wonder 
what is raw

tuple, TypeTuple or Tuple :)


Yes, there's a DIP to rename std.typetuple to std.meta.list. I 
made a pull to do that (which goes further than the DIP), but I 
don't know if the deprecation/disruption will be acceptable. If 
not, perhaps we could just add a better named alias for 
TypeTuple (e.g. MetaTuple) but keep the same module name. I 
don't think the status quo is really acceptable.


I'm excited for that DIP to be implemented so I'll have my own 
Phobos module.




Re: Compile time iota

2015-01-22 Thread H. S. Teoh via Digitalmars-d
On Thu, Jan 22, 2015 at 01:21:39PM -0800, Andrei Alexandrescu via Digitalmars-d 
wrote:
[...]
 I'm ambivalent about this; I think it could go either way without
 making a huge impact. (BTW I like GTK's idea to keep the old names
 around. They could be marginalized in the documentation but still
 allow older programs to build.)

+1. I think we should adopt this policy. Deprecated symbols should stick
around basically forever (possibly relegated to a dedicated submodule
publicly imported by the original module, if we don't like accumulating
cruft in the latter), unless they were deprecated because we wanted to
reuse the symbol for something else. So they should basically have no
more documentation after the deprecation cycle but they should still
carry the deprecated() tag to point old code to the right place.


[...]
 That said https://github.com/D-Programming-Language/phobos/pull/2687
 will probably get pulled. Why? Because it's sensible, and because it's
 there.  It's the sensible, okay work that I'm most worried about, even
 more than bad work.

Yay! Does that mean we can merge 2687? :-P


T

-- 
Жил-был король когда-то, при нём блоха жила.


Re: Compile time iota

2015-01-22 Thread Andrei Alexandrescu via Digitalmars-d

On 1/22/15 2:39 PM, Dicebot wrote:

Things like std.typetuple, while not being as broken as std.json
implementation-wise, deal good amount of damage being a technical debt.
It simply unpleasant to build anything on top of it and Phobos lacks
quite many metaprogramming utilities. It is also a small but important
step in simplifying related learning curve.

I agree it shouldn't be considered a priority but if there is a work
done already there - why not?


I agree! And... I was afraid you were going to say all that. -- Andrei


Re: Compile time iota

2015-01-21 Thread H. S. Teoh via Digitalmars-d
On Wed, Jan 21, 2015 at 07:14:09PM +0100, zeljkog via Digitalmars-d wrote:
 
 Maybe something like this can be added to Fobos:
 
 template Iota(int start, int stop, int step = 1){
 template tuple(T...){
 alias tuple = T;
 }
 static if(start  stop)
 alias Iota = tuple!(start, Iota!(start + step, stop, step));
 else
 alias Iota = tuple!();
 }

This is actually already implemented as std.typecons.staticIota, but
it's currently undocumented and restricted to only Phobos code. I'm not
sure why it was decided not to make it public, but if you file an
enhancement request, the devs can look at it and decide if it's worth
making it public.


T

-- 
Life is unfair. Ask too much from it, and it may decide you don't deserve what 
you have now either.


Compile time iota

2015-01-21 Thread zeljkog via Digitalmars-d


Maybe something like this can be added to Fobos:

template Iota(int start, int stop, int step = 1){
template tuple(T...){
alias tuple = T;
}
static if(start  stop)
alias Iota = tuple!(start, Iota!(start + step, stop, step));
else
alias Iota = tuple!();
}


Re: Compile time iota

2015-01-21 Thread zeljkog via Digitalmars-d

On 21.01.15 19:23, H. S. Teoh via Digitalmars-d wrote:


This is actually already implemented as std.typecons.staticIota, but
it's currently undocumented and restricted to only Phobos code. I'm not
sure why it was decided not to make it public, but if you file an
enhancement request, the devs can look at it and decide if it's worth
making it public.



I see, thx.

And good name staticIota, unlike TypeTuple. I always wonder what is raw 
tuple, TypeTuple or Tuple :)