<div dir="ltr">Hi Paul,<div><br></div><div>As someone who uses Haskell commercially for a couple of years now, I think I have something to add.</div><div><br></div><div>A small disclaimer: none of the members of our team has an academic background. We all have different backgrounds: C#, Java, Ruby, Python, C, even Perl if I am not mistaken. Yet we ended up with FP first, and then with Haskell.</div><div><br></div><div>We have switched to Haskell from Scala, which _is_ a multi-paradigm language borrowing bits and pieces from other languages/paradigms and mixing them together. It is an enormously hard work to do it and for that, I very much respect Odersky and the core Scala team. But at the same time, Scala is a very complicated language where pretty much nothing feels consistent or conceptually finished. Too many things in Scala can get you only that far before they become unprincipled. And then it justs stops and you have to find a workaround.</div><div>This isn't a problem with Scala particularly though, it is exactly a problem of borrowing bits of foreign concepts: they simply don't fuse into one cohesive system. </div><div>As a result, the language becomes overly complicated and less useful.</div><div>In his talk (<a href="https://www.youtube.com/watch?v=v8IQ-X2HkGE">https://www.youtube.com/watch?v=v8IQ-X2HkGE</a>) John De Goes explains exactly the same problem, talking about Scala, but the reasoning is applicable generally. One of the conclusions is very interesting: the mix, the middle ground between different paradigms is often imagined as a "paradise" that attracts peoples from all the sides. However, in reality, it is the place where no one is happy, no one is really interested in it, no one wants it. Watch the talk, it is fun.<br></div><div>Also: <a href="https://twitter.com/chris__martin/status/1016462268073209856">https://twitter.com/chris__martin/status/1016462268073209856</a></div><div><br></div><div>I bring this in because you name lots of languages, but when you speak about "borrowing" you don't name any. So I did. We lived throuh such a life, we felt it. Thank you very much, no desire to repeat it again.</div><div><br></div><div>I personally went through F# in my career (and I am still coming back to F#, and I am writing F# right now).  With it, I have not exactly the same, but similar experience.</div><div><br></div><div>Your joke about how Haskell has been made misses one point: it was initially designed as a lazy language (at least as far as I know). Many features that Haskell has now are there because of laziness: if you want to be lazy, then you have to be pure, you have to sequence your effects, etc.</div><div><br></div><div>"Let's defer lambda, name it IO and let's call it Monad" -  this bit isn't even funny. Monad isn't IO. IO happens to be a monad (as many things do, List as an example), but monad isn't IO and has nothing to do with IO. A horse is classified as Mammal, but Mammal doesn't mean horse _at all_.<br></div><div><br></div><div>Now back to your items:</div><div><br></div><div><ul type="disc" style="margin-bottom:0cm;color:rgb(33,33,33);margin-top:0cm"><li class="inbox-inbox-m_6452379358851260564MsoListParagraph" style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-GB">No monads, no transformers</span></li></ul><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">In a context of a lazy language, you need to sequence your effects (including side effects), that's the first point. The second is that instead of disappearing from Haskell, monads (and other concepts) are making their way to other languages. Scala has them, F# has them, even C# has them (however indirectly). Try to take away List Monad from C# developers and they'll kill you ;)</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">Watch "What Haskell taught us when we were not looking" by Eric Torreborre</span></font><span style="font-size:14.6667px;color:rgb(33,33,33);font-family:Calibri,sans-serif"> (<a href="https://www.youtube.com/watch?v=aNL3137C74c">https://www.youtube.com/watch?v=aNL3137C74c</a>)</span></div><div><span style="font-size:14.6667px;color:rgb(33,33,33);font-family:Calibri,sans-serif">Also: </span><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px"><a href="https://twitter.com/Horusiath/status/1016593663626014720?s=09" class="">https://twitter.com/Horusiath/status/1016593663626014720?s=09</a> :)</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px"><br></span></font></div><ul type="disc" style="margin-bottom:0cm;color:rgb(33,33,33);margin-top:0cm"><li class="inbox-inbox-m_6452379358851260564MsoListParagraph" style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-GB">There are dependent types, linear types</span></li></ul><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">Agree here.  And they are coming to Haskell, naturally and without breaking it dramatically into another language.</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px"><br></span></font></div><ul type="disc" style="margin-bottom:0cm;color:rgb(33,33,33);margin-top:0cm"><li class="inbox-inbox-m_6452379358851260564MsoListParagraph" style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-GB">There are other evaluation models/abstractions (not only lambda)</span></li></ul><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">I think I made my point above.</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px"><br></span></font></div><ul type="disc" style="margin-bottom:0cm;color:rgb(33,33,33);margin-top:0cm"><li class="inbox-inbox-m_6452379358851260564MsoListParagraph" style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-GB">Special syntax for records fields, etc</span></li></ul><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">That would be nice. Although even coming from C# background, I don't entirely understand why it is _that much_ important for some people. For me personally, it is just a bit of annoyance. I have never felt like "Oh, I could achieve so much more if only I had records!" :) Lenses and generic lenses help, so be it. But I don't think that anything prevents Haskell from having it, and I don't think that Haskell as a language needs a dramatic change as you depict to make it happen. Just a feature.</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px"><br></span></font></div><ul type="disc" style="margin-bottom:0cm;color:rgb(33,33,33);margin-top:0cm"><li class="inbox-inbox-m_6452379358851260564MsoListParagraph" style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-GB">Less operators noise, language extensions (but it’s very disputable)</span></li></ul><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">I don't agree that operators are noise. You certainly can write Haskell almost without operators if you wish.</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">As for extensions, I think that many more should be just switched on by default.</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px"><br></span></font></div><ul type="disc" style="margin-bottom:0cm;color:rgb(33,33,33);margin-top:0cm"><li class="inbox-inbox-m_6452379358851260564MsoListParagraph" style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-GB">Solve problems with numerous from/to conversions (strings, etc)</span></li></ul><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">You mean that conversion should happen implicitly? Thank you, but no, thank you. This is a source of problems in many languages, and it is such a great thing that Haskell doesn't coerce types implicitly. </span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px"><br></span></font></div><ul type="disc" style="margin-bottom:0cm;color:rgb(33,33,33);margin-top:0cm"><li class="inbox-inbox-m_6452379358851260564MsoListParagraph" style="margin:0cm 0cm 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><span lang="EN-GB">Solve problems with libraries</span></li></ul><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">Surely, more libraries are better. I don't understand this "no business value" statement. Value for which business? What does it mean "check types, no business value"? <br>I also strongly disagree that there should only be one library for one thing. Do you know many ways are there to, say, parse XML? Or Json? How many different tradeoffs can be made while implementing a parser/serialiser? Some are valuable in one "business" but totally not acceptable in another, and vice versa. In our company, we have a set of requirements such that _none_ of the tradeoffs made by the existing XML parsers would satisfy them. So we had to write our own. Deliver business value, yeah. And you say that there should only be one XML parser for a given language? Absurd.</span></font></div></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">I think Haskell has only one problem with libraries: we need more of them. And then it falls into a famous joke: "The problem with Open Source Software is YOU because YOU are not contributing" :) Meaning that if we want more good libs then we should write more good libs :)</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px"><br></span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">Regards,</span></font></div><div><font color="#212121" face="Calibri, sans-serif"><span style="font-size:14.6667px">Alexey.</span></font></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Jul 14, 2018 at 5:05 PM Paul <<a href="mailto:aquagnu@gmail.com">aquagnu@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="RU" link="blue" vlink="#954F72"><div class="m_6452379358851260564WordSection1"><p class="MsoNormal"><span lang="EN-GB">I understand that my points are disputable, sure, example, multi-pardigm Oz – dead </span><span lang="EN-GB" style="font-family:"Segoe UI Emoji",sans-serif">😊</span><span lang="EN-GB"> Any rule has exceptions. But my point was that people don’t like elegant and one-abstraction languages. It’s my observation. For me, Smalltalk was good language (mostly dead, except Pharo, which looks cool). Forth – high-level “stack-around-assembler”, mostly dead (Factor looks abandoned, only 8<sup>th</sup> looks super cool, but it’s not free). What else? Lisp? OK, there are SBCL, Clojure, Racket... But you don’t find even Clojure in languages trends usually. APL, J – super cool! Seems dead (I don’t know what happens with K). ML, SML? By the way, Haskell role was to kill SML community, sure it is sad to acknowledge it, but it’s 100% true...<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">Haskell try to be minimalistic and IMHO this can lead to death. Joachim, I’m not talking “it’s good/it’s bad”, “multiparadigm is good” or else... I don’t know what is right. It’s my observations only. Looks like it can happen.</span></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span lang="EN-GB">If we will look to Haskell history then we see strange curve. I’ll try to describe it with humour, so, please, don;t take it seriously </span><span lang="EN-GB" style="font-family:"Segoe UI Emoji",sans-serif">😊</span><span lang="EN-GB"> <u></u><u></u></span></p><ul style="margin-top:0cm" type="disc"><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Let’s be pure lambda fanatics!</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Is it possible to create a big application?</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Is it possible to compile and optimize it?!</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Let’s try...</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Wow, it’s possible!!! (sure, it’s possible, Lisp did it long-long ago).</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Looks like puzzle, can be used to write a lot of articles (there were articles about combinators, Jay/Cat/Scheme, etc, now there are a lot of Haskell articles – big interesting in academia. But IMHO academia interest to language can kill it too: Clean, Strongtalk, etc)</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Stop! How to do I/O? Real programming?!!</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Ohh, if we will wrap it in lambda and defer it to top level (main::IO ()), it will have I/O type (wrapper is hidden in type)</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Let’s call it... Monad!!</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Wow, cool! Works! Anybody should use monads! Does not your language have monads? Then we fly to you! (everybody forgot that monads are workaround of Haskell limitation and are not needed in another languages. Also they lead to low-performance code)</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">But how to compose them???!?!</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">We will wrap/unwrap, wrap/unwrap.. Let’s call it... transformers!!! “Monad transformers” – sounds super cool. Your language does not have “lift” operation, right? Ugh...</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">How to access records fields... How... That’s a question. ‘.’ - no! ‘#’ - no! Eureka! We will add several language extensions and voila!</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">To be continued... </span><span lang="EN-GB" style="font-family:"Segoe UI Emoji",sans-serif">😊</span></li></ul><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">I love Haskell but I think such curve is absolutely impossible in commercial language. With IT managers </span><span lang="EN-GB" style="font-family:"Segoe UI Emoji",sans-serif">😊</span><span lang="EN-GB"> To solve problem in a way when solution leads to another problem which needs new solution again and reason is only to keep lambda-abstraction-only (OK, Vanessa, backpacks also </span><span lang="EN-GB" style="font-family:"Segoe UI Emoji",sans-serif">😉</span><span lang="EN-GB">) Can you imagine that all cars will have red color? Or any food will be sweet? It’s not technical question, but psychological and linguistic. Why native languages are not so limited? They even borrow words and forms from another one </span><span lang="EN-GB" style="font-family:"Segoe UI Emoji",sans-serif">😊</span><span lang="EN-GB"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">Haskell’s core team knows how better then me, and I respect a lot of Haskell users, most of them <u>helped me A LOT</u> (!!!). It’s not opinion even, because I don’t know what is a right way. Let’s call it observation and feeling of the future.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">I feel: Haskell has 3 cases: 1) to die 2) to change itself 3) to fork to another language<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB">How I see commercial successful Haskell-like language:<u></u><u></u></span></p><ul style="margin-top:0cm" type="disc"><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">No monads, no transformers</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">There are dependent types, linear types</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">There are other evaluation models/abstractions (not only lambda)</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Special syntax for records fields, etc</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Less operators noise, language extensions (but it’s very disputable)</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Solve problems with numerous from/to conversions (strings, etc)</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Solve problems with libraries</span></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span lang="EN-GB">Last point needs explanation:<u></u><u></u></span></p><ul style="margin-top:0cm" type="disc"><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">There is a lot of libraries written to check some type concepts only, no any business value. Also there are a lot of libraries written by students while they are learning Haskell: mostly without any business value/abandoned</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">There is situation when you have alternative libraries in one project due to dependencies (but should be one only, not both!)</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Strange dependencies: I have installed Agda even! Why???!</span></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span lang="EN-GB">IMHO problems with libraries and lambda-only-abstraction lead to super slow compilation, big and complex compiler.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB">So, currently I see (again, it’s my observation only) 2 big “camps”:<u></u><u></u></span></p><ol style="margin-top:0cm" start="1" type="1"><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Academia, which has own interests, for example, to keep Haskell minimalistic (one-only-abstraction). Trade-off only was to add language extensions but they fragmentizes the language</span></li><li class="m_6452379358851260564MsoListParagraph" style="margin-left:0cm"><span lang="EN-GB">Practical programmers, which interests are different from 1<sup>st</sup> “camp”</span></li></ol><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span lang="EN-GB">Another my observation is: a lot of peoples tried Haskell and switched to another languages (C#, F#, etc) because they cannot use it for big enterprise projects (Haskell becomes hobby for small experiments or is dropped off).<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">Joachim, I’m absolutely agreed that a big company can solve a lot of these problems. But some of them have already own languages (you can compare measure units in Haskell and in F#, what looks better...).<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">When I said about killer app, I mean: devs like Ruby not due to syntax but RoR. The same Python: sure, Python syntax is very good, but without Zope, Django, TurboGears, SQLAlchemy, Twisted, Tornado, Cheetah, Jinja, etc – nobody will use Python. Sure, there are exceptions: Delphi, CBuilder, for example. But this is bad karma of Borland </span><span lang="EN-GB" style="font-family:"Segoe UI Emoji",sans-serif">😊</span><span lang="EN-GB"> They had a lot of compilers (pascal, prolog, c/c++, etc), but... On the other hand after reincarnation we have C# </span><span lang="EN-GB" style="font-family:"Segoe UI Emoji",sans-serif">😊</span><span lang="EN-GB">  Actually all these are only observations: nobody knows the future.</span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">/Best regards, Paul</span><u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0cm 0cm 0cm"><p class="MsoNormal" style="border:none;padding:0cm"><b>From: </b><a href="mailto:jo@durchholz.org" target="_blank">Joachim Durchholz</a><br><b>Sent: </b>13 июля 2018 г. 21:49<br><b>To: </b><a href="mailto:haskell-cafe@haskell.org" target="_blank">haskell-cafe@haskell.org</a><br><b>Subject: </b>Re: [Haskell-cafe] Investing in languages (Was: What is yourfavourite Haskell "aha" moment?)</p></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Am 13.07.2018 um 09:38 schrieb PY:</p><p class="MsoNormal">> 1. Haskell limits itself to lambda-only. Example, instead to add other </p><p class="MsoNormal">> abstractions and to become modern MULTI-paradigm languages,</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">"modern"?</p><p class="MsoNormal">That's not an interesting property.</p><p class="MsoNormal">"maintainable", "expressive" - THESE are interesting. Multi-paradigm can </p><p class="MsoNormal">help, but if overdone can hinder it - the earliest multi-paradigm </p><p class="MsoNormal">language I'm aware of was PL/I, and that was a royal mess I hear.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">> So, point #1 is limitation in </p><p class="MsoNormal">> abstraction: monads, transformers, anything - is function. It's not </p><p class="MsoNormal">> good.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Actually limiting yourself to a single abstraciton tool can be good. </p><p class="MsoNormal">This simplifies semantics and makes it easier to build stuff on top of it.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Not that I'm saying that this is necessarily the best thing.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">> There were such languages already: Forth, Joy/Cat, APL/J/K... Most of</p><p class="MsoNormal">> them look dead.</p><p class="MsoNormal">Which proves nothing, because many multi-paradigm languages look dead, too.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">> When you try to be elegant, your product (language) died.</p><p class="MsoNormal">Proven by Lisp... er, disproven.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">> This is not my opinion, this is only my observation. People like </p><p class="MsoNormal">> diversity and variety: in food, in programming languages, in relations, </p><p class="MsoNormal">> anywhere :)</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Not in programming languages.</p><p class="MsoNormal">Actually multi-paradigm is usually a bad idea. It needs to be done in an </p><p class="MsoNormal">excellent fashion to create something even remotely usable, while a </p><p class="MsoNormal">single-paradigm language is much easier to do well.</p><p class="MsoNormal">And in practice, bad language design has much nastier consequences than </p><p class="MsoNormal">leaving out some desirable feature.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">> 2. When language has killer app and killer framework, IMHO it has more </p><p class="MsoNormal">> chances. But if it has _killer ideas_ only... So, those ideas will be </p><p class="MsoNormal">> re-implemented in other languages and frameworks but with more simple </p><p class="MsoNormal">> and typical syntax :)</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">"Typical" is in the eye of the beholder, so that's another non-argument.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">> It's difficult to compete with product, </p><p class="MsoNormal">> framework, big library, but it's easy to compete with ideas. It's an </p><p class="MsoNormal">> observation too :-)</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Sure, but Haskell has product, framework, big library.</p><p class="MsoNormal">What's missing is commitment by a big company, that's all. Imagine </p><p class="MsoNormal">Google adopting Haskell, committing to building libraries and looking </p><p class="MsoNormal">for Haskell programmers in the streets - all of a sudden, Haskell is </p><p class="MsoNormal">going to be the talk of the day. (Replace "Google" with whatever </p><p class="MsoNormal">big-name company with deep pockets: Facebook, MS, IBM, you name it.)</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">> language itself is not argument for me.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">You are arguing an awful lot about missing language features </p><p class="MsoNormal">("multi-paradigm") to credibly make that statement.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">> Argument for me (I </p><p class="MsoNormal">> am usual developer) are killer apps/frameworks/libraries/ecosystem/etc. </p><p class="MsoNormal">> Currently Haskell has stack only - it's very good, but most languages </p><p class="MsoNormal">> has similar tools (not all have LTS analogue, but big frameworks are the </p><p class="MsoNormal">> same).</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Yeah, a good library ecosystem is very important, and from the reports I </p><p class="MsoNormal">see on this list it's not really good enough.</p><p class="MsoNormal">The other issue is that Haskell's extensions make it more difficult to </p><p class="MsoNormal">have library code interoperate. Though that's a trade-off: The freedom </p><p class="MsoNormal">to add language features vs. full interoperability. Java opted for the </p><p class="MsoNormal">other opposite: 100% code interoperability at the cost of a really </p><p class="MsoNormal">annoying language evolution process, and that gave it a huge library </p><p class="MsoNormal">ecosystem.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">But... I'm not going to make the Haskell developers' decisions. If they </p><p class="MsoNormal">don't feel comfortable with reversing the whole culture and make </p><p class="MsoNormal">interoperability trump everything else, then I'm not going to blame </p><p class="MsoNormal">them. I'm not even going to predict anything about Haskell's future, </p><p class="MsoNormal">because my glass orb is out for repairs and I cannot currently predict </p><p class="MsoNormal">the future.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Regards,</p><p class="MsoNormal">Jo</p><p class="MsoNormal">_______________________________________________</p><p class="MsoNormal">Haskell-Cafe mailing list</p><p class="MsoNormal">To (un)subscribe, modify options or view archives go to:</p><p class="MsoNormal"><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a></p><p class="MsoNormal">Only members subscribed via the mailman list are allowed to post.</p><p class="MsoNormal"><u></u> <u></u></p></div></div>_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>