
I've been using Haskell for several years, but only really got into the power of the typeclasses recently. It's marvelous how pretty abstract concepts like Monoid, Monad, Functor, etc. can be used. 1. First it's remarkable how many instances they have on useful data structures. So the concepts become less abstract and more applied. 2. Second it's remarkable how the use of these concepts leads to expressive power and conciseness. Haskell is therefore a very beautiful language that seems to either be exploiting some mighty amazing coincidences or on the other hand is actually plumbing beautiful truths about the universe. But what if someone came along and said, "Well, conciseness isn't all that important. Having to type more isn't much of a drawback -- it doesn't really increase the time it takes to write a program once you consider that there is a greater time spent in requirements collection, overall design, debugging, and documentation. The real drawback of concise/expressive Haskell is the difficulty in understanding and using it fluently. Ultimately Haskell is just mathematicians having fun, but not very practical." Now, I would be sad to see someone argue this point of view, as I find Haskell to be beautiful and fun. But the learning difficulties are very real... 16 years of using imperative languages have hardly prepared my brain at all for concise/expressive Haskell. I only use it for a single hobby project and will probably never get beyond learning the list and Maybe instances of a few typeclasses. (It blows my mind to read the docs and see a dozen instances for certain typeclasses.... yikes! When would I ever be able to learn and use those?) I would just wonder what you, the reader, would say in response to an argument against the practicality of Haskell for these specific reasons: (1) conciseness isn't that important (2) it requires too much of an advanced mathematician's brain to use well. I have read it has advantages in parallel computing. What else? Or maybe you would say -- "It's not practical. So EMBRACE it. Have fun." Dennis

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 If the tables were turned and denotative programming were the norm and imperative programming the fringe community (not that denotative programming is entirely fringe as it were), you would no doubt have posed the opposite question. However, the tables aren't turned, and you aren't posing the opposite question, so let me give you a brief answer: Yes, Haskell is practical. To elaborate some: it is used in academia and industry. Not as much as some languages, but then again more than some other languages. Big universities like Chalmers use it, and big companies like Facebook use it. It is the primary language I myself use in industry as well. Let me repeat myself: Yes, Haskell is practical! If you have more specific questions, do not hesitate to ask. - -- Alexander alexander@plaimi.net https://secure.plaimi.net/~alexander -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCgAGBQJWVa/pAAoJENQqWdRUGk8BZ4cP/2jDPmnDKB8m5uqQmvWl1yei 0nBAv7HcWD4c3Vlo6xTn2c/KwaYZGiNwobVxnE0qiZsFZqc/GD7aThPBULDVPl2U dCmDLN4lQzXdu6k/SmHrWMZZl60U3AJ+LBkPGGJbiEa+Pi1NX1/7Jr7/755zx/K7 IIWLLa6E4ZGDBsX30raxfQzTr6A97QeBjUhFF8DMr/aVAyZR8hA+Zd3CswWtYnq4 Z5YCs7K3sFnqZafgp2el8gkJgoiSpUgB5yF/+6yn2aiX9Ez7kCwI/16CHu7DkJ/n 7WaONsPh8Q7ENirgl0rzWRTD2QpD1QWm2TAKK31ZSJVHbeOWHvP4GzGLZBg27RKR GKRTywOPCe8nsl4zP1NByxwIVVv0FTLrBFwpOHnO42mumRTn/VkUvl7w6wFf3c1A u2KCpz/wHGTnYJhukmCdmTw1DK13vLDjzqFG8JJMb5RX2IvYrFEn0RZpzjD1t+Gw mBeMqicivBC41TNgy6HlPzw8mqYcBRvMzYteuhab3WLJDnWA0DZfhvRiF6OFMFmo BWrqiD7NtojsmxIiimHb8d+2U4pYFub5M1zDZ+6RVqrn6TE4R1qz7KHsQKl7W8kL vsD4rp+04LCQCbyPGmlzJCULd/EUGN1jR+wRI/0ByUT0xcbII4kNINgJYGdhhjT0 Xu4Zq40PdC6t1yvMke4Y =Nz0V -----END PGP SIGNATURE-----

On Wed, Nov 25, 2015 at 4:56 AM, Alexander Berntsen
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512
If the tables were turned and denotative programming were the norm and imperative programming the fringe community (not that denotative programming is entirely fringe as it were), you would no doubt have posed the opposite question.
I don't agree. Having worked for 16 years in a government aerospace contractor doing C++ and Python programming, what I saw is that maybe half the programmers struggled with precise thinking and abstraction. They thought of programs as step-by-step recipes and implemented those recipes in exactly the same way they themselves had always thought about a problem. Also having worked as a math tutor, I see many people who struggle with abstract thinking. So my feeling is that at least half of the programmers I knew would reject Haskell outright and would feel it was pointlessly non-intuitive. Would they have thought it was intuitive if they were raised on it? I don't think so, because I think these same people were among those who struggle with all forms of abstract thought, like math students who may someday be able to appreciate a little math but are light years away from being math majors. We can pose a world in which the "tables were turned" but for that world to come into existence a lot of things would have to be changed about the current world, particularly increasing interest in abstract math from a young age. Okay, having written all that, please feel free to tear holes in my argument. I would like to be wrong and I don't have experience outside one workplace (and some math tutoring). My workplace was much better than a contractor we briefly hired. Those folks had about a 90% struggle ratio with using things like object orientation. "Just get it done, quick and dirty" was how they thought. My own workplace had some very intelligent people but between the high numbers who were just barely competent programmers, and a more "practical" orientation in the management (documentation was highly emphasized, testing was highly emphasized, but elegant code was practically unimportant), I just can't see the adoption of Haskell by them, not in this lifetime, not in this universe. Can an "okay" imperative programmer become an "okay" Haskell programmer? Does the necessary skill, work, motivation, and talent to program at an "ordinary" imperative level serve as a sufficient prerequisite for functional programming? I really don't think so, but I could be wrong.
However, the tables aren't turned, and you aren't posing the opposite question, so let me give you a brief answer: Yes, Haskell is practical.
To elaborate some: it is used in academia and industry. Not as much as some languages, but then again more than some other languages. Big universities like Chalmers use it, and big companies like Facebook use it. It is the primary language I myself use in industry as well.
Let me repeat myself: Yes, Haskell is practical!
If you have more specific questions, do not hesitate to ask.
Yes, I do have more specific questions. For example is the conciseness part of what makes it practical in these uses? Is the conciseness somehow bound up with what makes it practical? In other words, could we imagine a simpler language with the same level of practicality but less of a learning curve? By the way, I *love* conciseness and have experienced the possibility of it becoming intuitive. It's amazing once I understand an elegant piece of Haskell, once I have wired my brain to think in harmony with it, that it becomes immediately legible. So I know it's possible to make progress. I'm not saying that conciseness must forever remain an obtuse language. But I wonder if the same mechanisms that make Haskell concise (which are some of the things that make it hard) also are bound up with its practical advantages so that they can't be separated. Dennis

Dennis Raddle:
On Wed, Nov 25, 2015 at 4:56 AM, Alexander Berntsen
wrote:
<snip>
I don't agree. Having worked for 16 years in a government aerospace contractor doing C++ and Python programming, what I saw is that maybe half the programmers struggled with precise thinking and abstraction. They thought of programs as step-by-step recipes and implemented those recipes in exactly the same way they themselves had always thought about a problem.
Also having worked as a math tutor, I see many people who struggle with abstract thinking.
<snip>
Can an "okay" imperative programmer become an "okay" Haskell programmer? Does the necessary skill, work, motivation, and talent to program at an "ordinary" imperative level serve as a sufficient prerequisite for functional programming? I really don't think so, but I could be wrong.
What'd be the definition of an okay programmer? If we agree that's the one that "learns how to solve a few standard problems and then applies the same thing over and over without much creativity", then I'll argue this will work with Haskell just like with any imperative language. If you train them on Haskell that is. :-) <snip>
But I wonder if the same mechanisms that make Haskell concise (which are some of the things that make it hard) also are bound up with its practical advantages so that they can't be separated.
What you mean by practical? Does it mean that you can find enough people able to use it in your real-world project, without putting too high requirements on training them? If so, then we could say that given the current state of affairs, where the mass of okay programmers are trained on a different paradigm, Haskell is not all that practical. But if practical means that the language is well suited for solving real-world problems, in beautiful ways, once you get it, then it is uberpractical! :-) M.

Yes Haskell is practical except for finding Haskell replacement programmers.
--
--
Sent from an expensive device which will be obsolete in a few months! :D
Casey
On Nov 25, 2015 9:50 AM, "Martin Vlk"
Dennis Raddle:
On Wed, Nov 25, 2015 at 4:56 AM, Alexander Berntsen < alexander@plaimi.net> wrote:
<snip>
I don't agree. Having worked for 16 years in a government aerospace contractor doing C++ and Python programming, what I saw is that maybe half the programmers struggled with precise thinking and abstraction. They thought of programs as step-by-step recipes and implemented those recipes in exactly the same way they themselves had always thought about a problem.
Also having worked as a math tutor, I see many people who struggle with abstract thinking.
<snip>
Can an "okay" imperative programmer become an "okay" Haskell programmer? Does the necessary skill, work, motivation, and talent to program at an "ordinary" imperative level serve as a sufficient prerequisite for functional programming? I really don't think so, but I could be wrong.
What'd be the definition of an okay programmer? If we agree that's the one that "learns how to solve a few standard problems and then applies the same thing over and over without much creativity", then I'll argue this will work with Haskell just like with any imperative language. If you train them on Haskell that is. :-)
<snip>
But I wonder if the same mechanisms that make Haskell concise (which are some of the things that make it hard) also are bound up with its practical advantages so that they can't be separated.
What you mean by practical? Does it mean that you can find enough people able to use it in your real-world project, without putting too high requirements on training them?
If so, then we could say that given the current state of affairs, where the mass of okay programmers are trained on a different paradigm, Haskell is not all that practical.
But if practical means that the language is well suited for solving real-world problems, in beautiful ways, once you get it, then it is uberpractical! :-)
M. _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

I read all the above. I have to agree with KC... I have been a software
developer for 30+ years now and I would dearly love to be able to use
Haskell in my day to day tasks when being paid. As an IT contractor in the
UK however that just isn't going to happen. By and large the management /
project planning mentality is "lowest common denominator" when it comes to
large IT projects. It's not hard to understand the reasons and from a
commercial and business perspective it makes sense, of course it does.
I've been working on the UK MOT programme (now complete) for the last 18
months and it was all PHP, Zend Framework 2 and Doctrine because that skill
pool is huge compared to Haskell and when it comes to having a ready supply
of code capable meat-sacks to deliver stories on time, LCD is where it will
always be. TIOBE says that Java has been top dog for ever. I rest my case.
Us in the haskell world realise that people that can use Haskell
effectively would be much more productive, and probably produce a lot more
functional(!) code in a shorter space of time, have a high sprint velocity,
deliver more stories etc. Quickcheck is inspired!
The thought of being on an Agile team using haskell, wow, that's too much
to hope for...
All the best,
Sean Charles
On 25 November 2015 at 18:13, KC
Yes Haskell is practical except for finding Haskell replacement programmers.
-- --
Sent from an expensive device which will be obsolete in a few months! :D
Casey
On Nov 25, 2015 9:50 AM, "Martin Vlk"
wrote: Dennis Raddle:
On Wed, Nov 25, 2015 at 4:56 AM, Alexander Berntsen < alexander@plaimi.net> wrote:
<snip>
I don't agree. Having worked for 16 years in a government aerospace contractor doing C++ and Python programming, what I saw is that maybe half the programmers struggled with precise thinking and abstraction. They thought of programs as step-by-step recipes and implemented those recipes in exactly the same way they themselves had always thought about a problem.
Also having worked as a math tutor, I see many people who struggle with abstract thinking.
<snip>
Can an "okay" imperative programmer become an "okay" Haskell programmer? Does the necessary skill, work, motivation, and talent to program at an "ordinary" imperative level serve as a sufficient prerequisite for functional programming? I really don't think so, but I could be wrong.
What'd be the definition of an okay programmer? If we agree that's the one that "learns how to solve a few standard problems and then applies the same thing over and over without much creativity", then I'll argue this will work with Haskell just like with any imperative language. If you train them on Haskell that is. :-)
<snip>
But I wonder if the same mechanisms that make Haskell concise (which are some of the things that make it hard) also are bound up with its practical advantages so that they can't be separated.
What you mean by practical? Does it mean that you can find enough people able to use it in your real-world project, without putting too high requirements on training them?
If so, then we could say that given the current state of affairs, where the mass of okay programmers are trained on a different paradigm, Haskell is not all that practical.
But if practical means that the language is well suited for solving real-world problems, in beautiful ways, once you get it, then it is uberpractical! :-)
M. _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

"lowest common denominator"
Right on, Sean. That pretty much sums up the state of affairs.
I would however say that the sort of culture, mindset, if you will,
agile development encourages might not be entirely compatible with the
thinking process and general view of the universe that FP requires. I
could be mistaken on this entirely, but agile strikes me as something
that would b much more at home in an essentially business-oriented
environment used by people of that background e.g. people who thrive
on using UML.
Matthew
On 26/11/2015, emacstheviking
I read all the above. I have to agree with KC... I have been a software developer for 30+ years now and I would dearly love to be able to use Haskell in my day to day tasks when being paid. As an IT contractor in the UK however that just isn't going to happen. By and large the management / project planning mentality is "lowest common denominator" when it comes to large IT projects. It's not hard to understand the reasons and from a commercial and business perspective it makes sense, of course it does.
I've been working on the UK MOT programme (now complete) for the last 18 months and it was all PHP, Zend Framework 2 and Doctrine because that skill pool is huge compared to Haskell and when it comes to having a ready supply of code capable meat-sacks to deliver stories on time, LCD is where it will always be. TIOBE says that Java has been top dog for ever. I rest my case.
Us in the haskell world realise that people that can use Haskell effectively would be much more productive, and probably produce a lot more functional(!) code in a shorter space of time, have a high sprint velocity, deliver more stories etc. Quickcheck is inspired!
The thought of being on an Agile team using haskell, wow, that's too much to hope for...
All the best, Sean Charles
On 25 November 2015 at 18:13, KC
wrote: Yes Haskell is practical except for finding Haskell replacement programmers.
-- --
Sent from an expensive device which will be obsolete in a few months! :D
Casey
On Nov 25, 2015 9:50 AM, "Martin Vlk"
wrote: Dennis Raddle:
On Wed, Nov 25, 2015 at 4:56 AM, Alexander Berntsen < alexander@plaimi.net> wrote:
<snip>
I don't agree. Having worked for 16 years in a government aerospace contractor doing C++ and Python programming, what I saw is that maybe half the programmers struggled with precise thinking and abstraction. They thought of programs as step-by-step recipes and implemented those recipes in exactly the same way they themselves had always thought about a problem.
Also having worked as a math tutor, I see many people who struggle with abstract thinking.
<snip>
Can an "okay" imperative programmer become an "okay" Haskell programmer? Does the necessary skill, work, motivation, and talent to program at an "ordinary" imperative level serve as a sufficient prerequisite for functional programming? I really don't think so, but I could be wrong.
What'd be the definition of an okay programmer? If we agree that's the one that "learns how to solve a few standard problems and then applies the same thing over and over without much creativity", then I'll argue this will work with Haskell just like with any imperative language. If you train them on Haskell that is. :-)
<snip>
But I wonder if the same mechanisms that make Haskell concise (which are some of the things that make it hard) also are bound up with its practical advantages so that they can't be separated.
What you mean by practical? Does it mean that you can find enough people able to use it in your real-world project, without putting too high requirements on training them?
If so, then we could say that given the current state of affairs, where the mass of okay programmers are trained on a different paradigm, Haskell is not all that practical.
But if practical means that the language is well suited for solving real-world problems, in beautiful ways, once you get it, then it is uberpractical! :-)
M. _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

Matthew,
Agile is "just a process"... presumably it can deliver *anything* not just
software projects.
There's a lot of software people I know who look very surprised when you
tell them where and why "kanban" was developed!
Either way, Haskell isn't mainstream and sadly is unlikely to become so, at
leat not this century unless the educational system in the UK improves
markedly!
Let's just all use it when and where we can and keep spreading the word!
Sean.
On 26 November 2015 at 09:33, MJ Williams
"lowest common denominator" Right on, Sean. That pretty much sums up the state of affairs. I would however say that the sort of culture, mindset, if you will, agile development encourages might not be entirely compatible with the thinking process and general view of the universe that FP requires. I could be mistaken on this entirely, but agile strikes me as something that would b much more at home in an essentially business-oriented environment used by people of that background e.g. people who thrive on using UML. Matthew
I read all the above. I have to agree with KC... I have been a software developer for 30+ years now and I would dearly love to be able to use Haskell in my day to day tasks when being paid. As an IT contractor in
UK however that just isn't going to happen. By and large the management / project planning mentality is "lowest common denominator" when it comes to large IT projects. It's not hard to understand the reasons and from a commercial and business perspective it makes sense, of course it does.
I've been working on the UK MOT programme (now complete) for the last 18 months and it was all PHP, Zend Framework 2 and Doctrine because that skill pool is huge compared to Haskell and when it comes to having a ready supply of code capable meat-sacks to deliver stories on time, LCD is where it will always be. TIOBE says that Java has been top dog for ever. I rest my case.
Us in the haskell world realise that people that can use Haskell effectively would be much more productive, and probably produce a lot more functional(!) code in a shorter space of time, have a high sprint velocity, deliver more stories etc. Quickcheck is inspired!
The thought of being on an Agile team using haskell, wow, that's too much to hope for...
All the best, Sean Charles
On 25 November 2015 at 18:13, KC
wrote: Yes Haskell is practical except for finding Haskell replacement programmers.
-- --
Sent from an expensive device which will be obsolete in a few months! :D
Casey
On Nov 25, 2015 9:50 AM, "Martin Vlk"
wrote: Dennis Raddle:
On Wed, Nov 25, 2015 at 4:56 AM, Alexander Berntsen < alexander@plaimi.net> wrote:
<snip>
I don't agree. Having worked for 16 years in a government aerospace contractor doing C++ and Python programming, what I saw is that maybe half the programmers struggled with precise thinking and abstraction. They thought of programs as step-by-step recipes and implemented those recipes in exactly the same way they themselves had always thought about a problem.
Also having worked as a math tutor, I see many people who struggle with abstract thinking.
<snip>
Can an "okay" imperative programmer become an "okay" Haskell programmer? Does the necessary skill, work, motivation, and talent to program at an "ordinary" imperative level serve as a sufficient prerequisite for functional programming? I really don't think so, but I could be
wrong.
What'd be the definition of an okay programmer? If we agree that's the one that "learns how to solve a few standard problems and then applies the same thing over and over without much creativity", then I'll argue this will work with Haskell just like with any imperative language. If you train them on Haskell that is. :-)
<snip>
But I wonder if the same mechanisms that make Haskell concise (which are some of the things that make it hard) also are bound up with its practical advantages so that they can't be separated.
What you mean by practical? Does it mean that you can find enough
On 26/11/2015, emacstheviking
wrote: the people able to use it in your real-world project, without putting too high requirements on training them?
If so, then we could say that given the current state of affairs, where the mass of okay programmers are trained on a different paradigm, Haskell is not all that practical.
But if practical means that the language is well suited for solving real-world problems, in beautiful ways, once you get it, then it is uberpractical! :-)
M. _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

On Wed, Nov 25, 2015 at 9:50 AM, Martin Vlk
What'd be the definition of an okay programmer? If we agree that's the one that "learns how to solve a few standard problems and then applies the same thing over and over without much creativity", then I'll argue this will work with Haskell just like with any imperative language. If you train them on Haskell that is. :-)
<snip>
Martin, One issue I can foresee is having both good Haskell programmers and non-creative Haskell programmers on the same team. The good ones can easily write code that is incomprehensible to the non-creative ones. It actually happened in my team twice that C++ code was thrown out and assigned to someone else for a complete rewrite, because the senior software engineer deemed that the original code was incomprehensible. In both cases it was code that used a few tricks that I think were good, and in both cases the replacement code was buggier.
But I wonder if the same mechanisms that make Haskell concise (which are some of the things that make it hard) also are bound up with its practical advantages so that they can't be separated.
What you mean by practical? Does it mean that you can find enough people able to use it in your real-world project, without putting too high requirements on training them?
If so, then we could say that given the current state of affairs, where the mass of okay programmers are trained on a different paradigm, Haskell is not all that practical.
But if practical means that the language is well suited for solving real-world problems, in beautiful ways, once you get it, then it is uberpractical! :-)
Very well put. I didn't really think about what meant by "practical," and it depends on context. I am gaining some Haskell momentum, and I see how the potential for conciseness seems to encourage the kind of thinking about a problem that leads to simplifications and optimizations. When I spend some time thinking about a good way to write it in Haskell, it's guiding me toward a better understanding of the problem itself that would potentially be helpful no matter what language I'm using. But using Haskell provides the impetus for this thinking. Dennis

On Fri, Nov 27, 2015 at 8:17 AM, Dennis Raddle
Martin,
One issue I can foresee is having both good Haskell programmers and non-creative Haskell programmers on the same team. The good ones can easily write code that is incomprehensible to the non-creative ones.
It actually happened in my team twice that C++ code was thrown out and assigned to someone else for a complete rewrite, because the senior software engineer deemed that the original code was incomprehensible. In both cases it was code that used a few tricks that I think were good, and in both cases the replacement code was buggier.
This is not unique to Haskell; this is a problem with programming in general. People with more ability can write code that is clean, fast, and easy to read, but which "average" programmers find confusing. I don't think it's realistic to avoid that in any language; I've even had people review my Ruby code that used the "Hash[]" constructor to build a hashmap from a list and call that confusing.
Very well put. I didn't really think about what meant by "practical," and it depends on context.
I am gaining some Haskell momentum, and I see how the potential for conciseness seems to encourage the kind of thinking about a problem that leads to simplifications and optimizations. When I spend some time thinking about a good way to write it in Haskell, it's guiding me toward a better understanding of the problem itself that would potentially be helpful no matter what language I'm using. But using Haskell provides the impetus for this thinking.
In my opinion, thinking about the problem up front is the most vital
aspect of writing reliable, readable code, in any language. Haskell allows you to encode those insights into the types; in other languages, they frequently live only in your short term memory (or, if you're particularly conscientious, docstrings--although those are neglected the minute anyone else touches them).

Hey Dennis, I've been learning Hakell for a bit more than half year now. Like you, I've had all kind of doubts and I have experienced first-hand the steep learning curve. I too have asked myself whether it's worth the effort for an ordinary (read: not academically inclined and gifted) programmer to learn the language with all its high level abstractions. I have chosen to learn properly, from the ground up, using the "http://haskellbook.com/progress.html" for that, and it is taking me quite some time, because my brain is used to very different way of going about programming. I am not beyond all this, yet.. but recently I have decided to finally go and use the langage on a real project. I picked one of the issues in cabal, marked as "easy", worked out the fix for it and contributed a pull request to cabal on github. And to my surprise, I am not finding it difficult anymore to understand Haskell code, and even produce my own. I can feel that I have crossed some kind of threshold and it is not looking that haunting anymore. So I think there is no question that the language and the underlying abstractions are practical. It's more that it is a good bit unconventional in relation to the mainstream and therefore one has to switch gears before being able to use Haskell. Martin Dennis Raddle:
I've been using Haskell for several years, but only really got into the power of the typeclasses recently. It's marvelous how pretty abstract concepts like Monoid, Monad, Functor, etc. can be used.
1. First it's remarkable how many instances they have on useful data structures. So the concepts become less abstract and more applied.
2. Second it's remarkable how the use of these concepts leads to expressive power and conciseness.
Haskell is therefore a very beautiful language that seems to either be exploiting some mighty amazing coincidences or on the other hand is actually plumbing beautiful truths about the universe.
But what if someone came along and said, "Well, conciseness isn't all that important. Having to type more isn't much of a drawback -- it doesn't really increase the time it takes to write a program once you consider that there is a greater time spent in requirements collection, overall design, debugging, and documentation. The real drawback of concise/expressive Haskell is the difficulty in understanding and using it fluently. Ultimately Haskell is just mathematicians having fun, but not very practical."
Now, I would be sad to see someone argue this point of view, as I find Haskell to be beautiful and fun. But the learning difficulties are very real... 16 years of using imperative languages have hardly prepared my brain at all for concise/expressive Haskell. I only use it for a single hobby project and will probably never get beyond learning the list and Maybe instances of a few typeclasses. (It blows my mind to read the docs and see a dozen instances for certain typeclasses.... yikes! When would I ever be able to learn and use those?)
I would just wonder what you, the reader, would say in response to an argument against the practicality of Haskell for these specific reasons: (1) conciseness isn't that important (2) it requires too much of an advanced mathematician's brain to use well.
I have read it has advantages in parallel computing. What else?
Or maybe you would say -- "It's not practical. So EMBRACE it. Have fun."
Dennis
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

On Wed, 25 Nov 2015 13:37:30 +0100, Dennis Raddle
But what if someone came along and said, "Well, conciseness isn't all that important. Having to type more isn't much of a drawback -- it doesn't really increase the time it takes to write a program once you consider that there is a greater time spent in requirements collection, overall design, debugging, and documentation. The real drawback of concise/expressive Haskell is the difficulty in understanding and using it fluently. Ultimately Haskell is just mathematicians having fun, but not very practical."
It is not just the amount of work with the keyboard; it also takes more time thinking about details if you don't have the conciseness of Haskell. More necessary thinking and typing leads to more bugs, software engineering books talk about the number of bugs per 1000 lines of code being constant, independent of the level of the language. Take for instance the memory allocation in C: - you have to remember which macro you defined for the buffer size - check your input if it doesn't overflow your buffer - remember to free the memory at the right point(s) in your program - check that you don't use the pointer after the buffer has been freed The automatic memory allocation in Haskell doesn't just save you the typing for allocation and freeing, it saves a lot of thinking and checking. It prevents a lot of bugs and therefore, it saves testing and debugging time. Similar things can be said about other things that make Haskell programs more compact. There are other advantages when using Haskell, e.g. - better modularity, see the paper "Why functional programming matters"[0] - guaranteed pure functions make it easier to reason about the code. You can find more at the Haskell site[1]. Regards, Henk-Jan van Tuyl [0] http://www.cse.chalmers.se/~rjmh/Papers/whyfp.pdf [1] https://wiki.haskell.org/Introduction#What.27s_good_about_functional_program... -- Folding@home What if you could share your unused computer power to help find a cure? In just 5 minutes you can join the world's biggest networked computer and get us closer sooner. Watch the video. http://folding.stanford.edu/
participants (8)
-
Alexander Berntsen
-
Blake Hyde
-
Dennis Raddle
-
emacstheviking
-
Henk-Jan van Tuyl
-
KC
-
Martin Vlk
-
MJ Williams