News for hackers. Stuff that matters.
Re:Algebraic Data Types: Things I wish someone had explained... by zozbot234 on Tuesday November 19, 2019 @10:25AM (#21573802)
> I could not believe they had not been part of any prior language I'd learned.

Huh? They're part of Pascal (known as variant records) and plenty of other languages besides. It's mostly C that lacks them, and even then you're just expected to implement them yourself, for maximum efficiency.

Re:Algebraic Data Types: Things I wish someone had explained... by reificator on Tuesday November 19, 2019 @11:09AM (#21574472)
> Huh? They're part of Pascal (known as variant records) and plenty of other languages besides. It's mostly C that lacks them, and even then you're just expected to implement them yourself, for maximum efficiency.

"plenty of other languages besides" doesn't matter if those languages aren't being used in practice.

Let me list off the top 10 languages (incl markup) from the most recent Stack Overflow survey, specifically the Professional Developers tab. https://insights.stackoverflow.com/survey/2019#technology-_-...

* JavaScript

* HTML/CSS

* SQL

* Python

* Java

* Bash/Shell/PowerShell

* C#

* PHP

* TypeScript

* C++

You can argue about the demographics of Stack Overflow or the bias in users who actually respond on these surveys or a million other things. But based on job postings I've seen in the last several years, I'd wager this list is pretty accurate.

Re:Algebraic Data Types: Things I wish someone had explained... by gimboland on Tuesday November 19, 2019 @02:58PM (#21577544)
Yeah. You're not wrong. Sadly, while HN is full of people of great technical expertise, it's also full of people whose knee-jerk reaction to reading _anything_ here is to think of how they can say it's wrong, preferably in a way that implies or explicitly states that they're bigger experts than the person they're replying to. I find it very off-putting, personally, but I keep wading through the crap because (thankfully) that's not the whole story.
Re:Algebraic Data Types: Things I wish someone had explained... by fauigerzigerk on Tuesday November 19, 2019 @03:03PM (#21577626)
Swift is being used in practice and will most likely see more use in the future as Objective-C fades.
Re:Algebraic Data Types: Things I wish someone had explained... by reificator on Tuesday November 19, 2019 @03:30PM (#21577933)
If you follow the link you'll find Swift is already above Objective-C on that survey, just that neither of them made the top ten.
Re:Algebraic Data Types: Things I wish someone had explained... by fauigerzigerk on Tuesday November 19, 2019 @03:45PM (#21578078)
I did follow the link, but I disagree with your conclusion that being used by at least 6.6% of respondents to make apps for hundereds of millions of users amounts to "not being used in practice".
Re:Algebraic Data Types: Things I wish someone had explained... by reificator on Tuesday November 19, 2019 @05:08PM (#21578838)
If you take my comment in isolation, that's a reasonable read.

But it was a response to the following comment:

> > I could not believe they had not been part of any prior language I'd learned.

> Huh? They're part of Pascal (known as variant records) and plenty of other languages besides. It's mostly C that lacks them, and even then you're just expected to implement them yourself, for maximum efficiency.

With the context of that post, I hope you would understand that I am disagreeing with the insinuation that every programmer has used "Pascal [...] and plenty of other languages besides". You can easily learn five different languages and finally end up in Haskell without having encountered ADTs before.

Re:Algebraic Data Types: Things I wish someone had explained... by akavi on Tuesday November 19, 2019 @10:43AM (#21574060)
They're not present in the dominant statically typed languages (C/C++/C#/Java/Go) and not really a thing in dynamic languages generally, and so the vast majority of programmers never encounter the concept.
Re:Algebraic Data Types: Things I wish someone had explained... by pmontra on Tuesday November 19, 2019 @11:01AM (#21574333)
Well, Pascal has been dominant for a short time before C and its family really took off. But that was such a long time ago that I kind of forgot about it. C (without ++) was nice because you could write code without too much boilerplate compare to Pascal and it was noticeably faster (computers were slow.) However any mistake with pointers could crash the computer if it was a DOS PC and not a UNIX workstation.
Re:Algebraic Data Types: Things I wish someone had explained... by thestoicattack on Tuesday November 19, 2019 @11:55AM (#21575150)
C++ has std::variant, but that's pretty new.
Re:Algebraic Data Types: Things I wish someone had explained... by Sniffnoy on Tuesday November 19, 2019 @02:05PM (#21576879)
My understanding is that's not really a sum type, though -- e.g., you couldn't use it to add a type to itself, only to add distinct types to each other.
Re:Algebraic Data Types: Things I wish someone had explained... by edflsafoiewq on Tuesday November 19, 2019 @04:30PM (#21578517)
No, you can add a type to itself (that is a pain in the ass though). You might be thinking of the fact that it may not hold a value (eg. if an exception is thrown while moving into it), but they made it as close to a sum as they could given the nature of C++.
Re:Algebraic Data Types: Things I wish someone had explained... by AnimalMuppet on Tuesday November 19, 2019 @12:03PM (#21575259)
It's been a long time since I did anything with Pascal, but if I recall variant records correctly, they're not very different from C's unions. In particular, I don't recall variant records having anything like totality checking. I don't even recall it having anything that could tell you what kind of thing it currently holds. But as I said, it's been a long time...
Re:Algebraic Data Types: Things I wish someone had explained... by saghm on Tuesday November 19, 2019 @03:06PM (#21577671)
> They're part of Pascal (known as variant records) and plenty of other languages besides.

It sounds like GP is saying they had never used of those languages beforehand. I'm not sure why would be so surprising given that it doesn't accompany any other information like "and I had used 20 other languages before it".

Re:Algebraic Data Types: Things I wish someone had explained... by Roboprog on Tuesday November 19, 2019 @06:28PM (#21579504)
C has unions, which are similar to Pascal’s variant records, though without an explicit out of band discriminant.