www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - std.variant Is Everything Cool About D

reply Mike Parker <aldacron gmail.com> writes:
Jared Hanson (a.k.a Meta and MetaLang around these parts) was 
inspired by an article titled "std::visit is everything wrong 
with modern C++" to contrast it with D's std.variant.visit. The 
result is this well-written post for the D Blog.

The blog:
https://dlang.org/blog/2018/03/29/std-variant-is-everything-cool-about-d/

Reddit:
https://www.reddit.com/r/programming/comments/881hmi/stdvariant_is_everything_cool_about_d/
Mar 29
next sibling parent Sam Potter <sfp umiacs.umd.edu> writes:
Awesome.

I just scanned the "learn" section of the dlang.org, and didn't 
immediately see a section titled "pattern matching" which 
includes the nice D code from this blog post (sorry if it's in 
there---but it isn't jumping out at me). Maybe worth including or 
emphasizing.
Mar 29
prev sibling next sibling parent reply 12345swordy <alexanderheistermann gmail.com> writes:
On Thursday, 29 March 2018 at 14:10:39 UTC, Mike Parker wrote:
 Jared Hanson (a.k.a Meta and MetaLang around these parts) was 
 inspired by an article titled "std::visit is everything wrong 
 with modern C++" to contrast it with D's std.variant.visit. The 
 result is this well-written post for the D Blog.

 The blog:
 https://dlang.org/blog/2018/03/29/std-variant-is-everything-cool-about-d/

 Reddit:
 https://www.reddit.com/r/programming/comments/881hmi/stdvariant_is_everything_cool_about_d/
There are some quite criticisms being made in the comments section.
Mar 29
next sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 3/29/2018 10:30 AM, 12345swordy wrote:
 There are some quite criticisms being made in the comments section.
The main criticism is a misunderstanding about std.variant's allocation strategy. I have been trying to correct that.
Mar 29
parent Walter Bright <newshound2 digitalmars.com> writes:
On 3/29/2018 12:32 PM, Walter Bright wrote:
 On 3/29/2018 10:30 AM, 12345swordy wrote:
 There are some quite criticisms being made in the comments section.
The main criticism is a misunderstanding about std.variant's allocation strategy. I have been trying to correct that.
Part of the problem is the documentation for std.variant is not clear about when memory allocation happens. It also is not clear that "boxing" means "allocates space for the data on the GC heap and stores a pointer to it in the variant".
Mar 30
prev sibling next sibling parent "Nick Sabalausky (Abscissa)" <SeeWebsiteToContactMe semitwist.com> writes:
On 03/29/2018 01:30 PM, 12345swordy wrote:
 
 There are some quite criticisms being made in the comments section.
Some of them I actually agree with. Much as I love D, its Variant/Arithmetic *is* a terribly inferior hack compared to various languages that have built-in sum types. (Like Nemerle).
Mar 29
prev sibling parent bachmeier <no spam.net> writes:
On Thursday, 29 March 2018 at 17:30:04 UTC, 12345swordy wrote:

 There are some quite criticisms being made in the comments 
 section.
Hopefully there will be a time in the future where D stops selling itself as a dialect of C++. Whether the criticisms are right or wrong, they show the difficulty of selling D to C++ developers, and worse, these discussions tell the world that D and C++ are two sides of the same coin.
Mar 29
prev sibling next sibling parent reply Meta <jared771 gmail.com> writes:
On Thursday, 29 March 2018 at 14:10:39 UTC, Mike Parker wrote:
 Jared Hanson (a.k.a Meta and MetaLang around these parts) was 
 inspired by an article titled "std::visit is everything wrong 
 with modern C++" to contrast it with D's std.variant.visit. The 
 result is this well-written post for the D Blog.

 The blog:
 https://dlang.org/blog/2018/03/29/std-variant-is-everything-cool-about-d/

 Reddit:
 https://www.reddit.com/r/programming/comments/881hmi/stdvariant_is_everything_cool_about_d/
Unfortunately, this turned out to be the worst possible day for me to try to actively monitor the thread and respond to questions. I'm surprised that people latched onto my little quip about C++ using the name variant for a tagged union.
Mar 29
parent reply jmh530 <john.michael.hall gmail.com> writes:
On Friday, 30 March 2018 at 00:37:27 UTC, Meta wrote:
 Unfortunately, this turned out to be the worst possible day for 
 me to try to actively monitor the thread and respond to 
 questions. I'm surprised that people latched onto my little 
 quip about C++ using the name variant for a tagged union.
It seems that any comment in a D article that refers to C++ will be construed in the worst possible way on reddit...
Mar 29
parent reply Mike Parker <aldacron gmail.com> writes:
On Friday, 30 March 2018 at 02:46:13 UTC, jmh530 wrote:
 On Friday, 30 March 2018 at 00:37:27 UTC, Meta wrote:
 Unfortunately, this turned out to be the worst possible day 
 for me to try to actively monitor the thread and respond to 
 questions. I'm surprised that people latched onto my little 
 quip about C++ using the name variant for a tagged union.
It seems that any comment in a D article that refers to C++ will be construed in the worst possible way on reddit...
That's fine by me. Right now, this post is the fourth most-viewed this year and it's not far off from number three. While I would love to please the reddit crowd to the extent that we see no negativity, I'm quite happy with the fact that our comment threads there are nowhere near as negative as they used to be. Posts that do generate this level of discussion have higher views. I can't dismiss reddit comments completely, but I don't put as much weight on them as I used to. A subreddit is somewhat comparable to a forum for a popular video game -- lots of vocal people who are actually a small minority of the player base. We can't measure the number of people who click the reddit link to the blog and come away from it with a positive impression. They aren't going to bother commenting on reddit.
Mar 29
parent Patrick Schluter <Patrick.Schluter bbox.fr> writes:
On Friday, 30 March 2018 at 03:54:21 UTC, Mike Parker wrote:
 On Friday, 30 March 2018 at 02:46:13 UTC, jmh530 wrote:
 On Friday, 30 March 2018 at 00:37:27 UTC, Meta wrote:
 Unfortunately, this turned out to be the worst possible day 
 for me to try to actively monitor the thread and respond to 
 questions. I'm surprised that people latched onto my little 
 quip about C++ using the name variant for a tagged union.
It seems that any comment in a D article that refers to C++ will be construed in the worst possible way on reddit...
That's fine by me. Right now, this post is the fourth most-viewed this year and it's not far off from number three. While I would love to please the reddit crowd to the extent that we see no negativity, I'm quite happy with the fact that our comment threads there are nowhere near as negative as they used to be. Posts that do generate this level of discussion have higher views. I can't dismiss reddit comments completely, but I don't put as much weight on them as I used to. A subreddit is somewhat comparable to a forum for a popular video game -- lots of vocal people who are actually a small minority of the player base. We can't measure the number of people who click the reddit link to the blog and come away from it with a positive impression. They aren't going to bother commenting on reddit.
You're right and the unreasonable position of the SolidStateGraphics user is clear for everyone to see. There are some points he makes that could be discussed but by holding essentially the position "D is shit because it is not C++" his whole argumentation falls apart as Stockholm-syndrome induced rationalisation.
Mar 30
prev sibling next sibling parent reply dangbinghoo <dangbinghoo gmail.com> writes:
On Thursday, 29 March 2018 at 14:10:39 UTC, Mike Parker wrote:
 Jared Hanson (a.k.a Meta and MetaLang around these parts) was 
 inspired by an article titled "std::visit is everything wrong 
 with modern C++" to contrast it with D's std.variant.visit. The 
 result is this well-written post for the D Blog.

 The blog:
 https://dlang.org/blog/2018/03/29/std-variant-is-everything-cool-about-d/

 Reddit:
 https://www.reddit.com/r/programming/comments/881hmi/stdvariant_is_everything_cool_about_d/
I think we need a book about D's std Phobos, like `mastering STL` or something like C++ world do, but of course, I didn't mean selling to C++ world, I mean newbie may need knowledge about the Phobos and the design and using the power of the library for real practice, not to compare with the C++ world.
Mar 29
parent rjframe <dlang ryanjframe.com> writes:
On Fri, 30 Mar 2018 00:55:20 +0000, dangbinghoo wrote:

 I think we need a book about D's std Phobos, like `mastering STL`
 or something like C++ world do, but of course, I didn't mean selling to
 C++ world, I mean newbie may need knowledge about the Phobos and the
 design and using the power of the library for real practice, not to
 compare with the C++ world.
I'm not sure Phobos is complex enough to need a book just for the library. Anything that would go into it would either be a programming in D-in-general thing or would be a useful improvement to the documentation itself.
Mar 30
prev sibling next sibling parent reply Meta <jared771 gmail.com> writes:
On Thursday, 29 March 2018 at 14:10:39 UTC, Mike Parker wrote:
 Jared Hanson (a.k.a Meta and MetaLang around these parts) was 
 inspired by an article titled "std::visit is everything wrong 
 with modern C++" to contrast it with D's std.variant.visit. The 
 result is this well-written post for the D Blog.

 The blog:
 https://dlang.org/blog/2018/03/29/std-variant-is-everything-cool-about-d/

 Reddit:
 https://www.reddit.com/r/programming/comments/881hmi/stdvariant_is_everything_cool_about_d/
I've submitted it to Hacker News as well (looks like someone posted it yesterday, but it only got 1 vote and there was no discussion, so I figured that was grounds enough for resubmission). If you've got an account, please give me your meaningless internet points. https://hn.algolia.com/?query=std.variant%20is%20everything%20cool%20about%20d&sort=byDate&prefix&page=0&dateRange=custom&type=story&dateStart=1522368000&dateEnd=1522454400
Mar 30
parent reply Meta <jared771 gmail.com> writes:
On Friday, 30 March 2018 at 13:44:50 UTC, Meta wrote:
 I've submitted it to Hacker News as well (looks like someone 
 posted it yesterday, but it only got 1 vote and there was no 
 discussion, so I figured that was grounds enough for 
 resubmission). If you've got an account, please give me your 
 meaningless internet points.

 https://hn.algolia.com/?query=std.variant%20is%20everything%20cool%20about%20d&sort=byDate&prefix&page=0&dateRange=custom&type=story&dateStart=1522368000&dateEnd=1522454400
And it seems they're still not biting. Looking at the front page, I can't believe how few actual programming or startup-related submissions there are. https://imgur.com/a/hFlbs
Mar 30
parent reply Pjotr Prins <pjotr.public12 thebird.nl> writes:
Great blog. Thanks.
Mar 31
parent Meta <jared771 gmail.com> writes:
On Saturday, 31 March 2018 at 17:36:30 UTC, Pjotr Prins wrote:
 Great blog. Thanks.
Thank you, glad you liked it.
Apr 01
prev sibling parent reply helxi <brucewayneshit gmail.com> writes:
On Thursday, 29 March 2018 at 14:10:39 UTC, Mike Parker wrote:
 Jared Hanson (a.k.a Meta and MetaLang around these parts) was 
 inspired by an article titled "std::visit is everything wrong 
 with modern C++" to contrast it with D's std.variant.visit. The 
 result is this well-written post for the D Blog.

 The blog:
 https://dlang.org/blog/2018/03/29/std-variant-is-everything-cool-about-d/

 Reddit:
 https://www.reddit.com/r/programming/comments/881hmi/stdvariant_is_everything_cool_about_d/
What is the difference between https://dlang.org/phobos/std_typecons.html#Nullable and Algebraic!(T, typeof(null))?
Apr 03
parent reply Meta <jared771 gmail.com> writes:
On Wednesday, 4 April 2018 at 03:09:22 UTC, helxi wrote:
 On Thursday, 29 March 2018 at 14:10:39 UTC, Mike Parker wrote:
 Jared Hanson (a.k.a Meta and MetaLang around these parts) was 
 inspired by an article titled "std::visit is everything wrong 
 with modern C++" to contrast it with D's std.variant.visit. 
 The result is this well-written post for the D Blog.

 The blog:
 https://dlang.org/blog/2018/03/29/std-variant-is-everything-cool-about-d/

 Reddit:
 https://www.reddit.com/r/programming/comments/881hmi/stdvariant_is_everything_cool_about_d/
What is the difference between https://dlang.org/phobos/std_typecons.html#Nullable and Algebraic!(T, typeof(null))?
Nullable is specifically specialized to this particular use-case and only has to store a boolean in addition the wrapped data (and there is a template "overload" that allows you to specify a specific value for the `null` state, which removes even that boolean). Also, with Nullable your data is guaranteed to not be boxed, whereas it's a possibility with Variant/Algebraic if the types you're working with are large enough.
Apr 03
parent reply Steven Schveighoffer <schveiguy yahoo.com> writes:
On 4/3/18 11:29 PM, Meta wrote:
 Also, with Nullable your 
 data is guaranteed to not be boxed, whereas it's a possibility with 
 Variant/Algebraic if the types you're working with are large enough.
Not with Algebraic. -Steve
Apr 04
parent Meta <jared771 gmail.com> writes:
On Wednesday, 4 April 2018 at 11:40:58 UTC, Steven Schveighoffer 
wrote:
 On 4/3/18 11:29 PM, Meta wrote:
 Also, with Nullable your data is guaranteed to not be boxed, 
 whereas it's a possibility with Variant/Algebraic if the types 
 you're working with are large enough.
Not with Algebraic. -Steve
Ah yes, you're right. Thanks Steven. This exact thing came up in the Reddit thread from a few days ago.
Apr 05