TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

The Haskell user experience

132 点作者 liangzan将近 10 年前

10 条评论

david-given将近 10 年前
My experience with learning Haskell was:<p>When it works, it&#x27;s magical. Finally realising that monads allow little bubbles of cause-and-effect. STM, which is utterly magical. Realising that not having side effects is freeing, not restricting. Collapsing huge chunks of code into little bits of pattern matching. Finding myself casually using a higher-order type because it was the easiest way to solve a problem.<p>When it&#x27;s warty, it&#x27;s really warty. Namespaces... oh god, namespaces. About three different rather poor ways to handle exceptions. A billion little unmemorable functions with symbolic names. Total lack of debugging tools. Trying to find where an a out-of-bounds list error was happening. Trying to debug a memory leak caused by insufficient strictness --- why do I need to care about this? The runtime should just take care of it for me; the whole point of a lazy language is that I shouldn&#x27;t have to care when evaluation happens.<p>Some of the warts are just embarrassing, and need fixing ASAP. Lack of information on a runtime exception is the biggest. Even BASIC would at least give me a line number!
评论 #10009493 未加载
评论 #10010000 未加载
评论 #10010769 未加载
评论 #10009527 未加载
评论 #10010961 未加载
评论 #10010172 未加载
评论 #10010332 未加载
评论 #10011491 未加载
marcosdumay将近 10 年前
Haskell has all the features of languages that become mainstream and mandated top-down on workplaces. I wouldn&#x27;t be much surprised if in a decade people start complaining about Haskell-shops they way we complain about Java-shops now. (But then, no language could get there without a marketing budget...)<p>Haskell lets big teams collaborate very well, makes it hard to bad coders to destroy an entire project, consist in a good enough filter so that HR won&#x27;t hire obscenely bad developers, gives enough space for software architects do their thing, and gives plenty of objectively measurable points to make managers happy.<p>That said, it&#x27;s completely immature. Haskell lacks packaging, environment tools, and even a complete standard library (hell, I had to put a package[1] at Hackage because no available TLS library would work!). It has all kinds of interesting advanced features, but the basics are simply missing.<p>[1] <a href="http:&#x2F;&#x2F;hackage.haskell.org&#x2F;package&#x2F;uniform-io" rel="nofollow">http:&#x2F;&#x2F;hackage.haskell.org&#x2F;package&#x2F;uniform-io</a>
评论 #10014885 未加载
评论 #10010850 未加载
baldfat将近 10 年前
Personally I switched from learning Haskell to learning Racket and couldn&#x27;t be happier. On the other side of banging my head I think Cabal is the biggest disappointment of my experience and it was the worst package management headaches for my own private builds.<p>Now that I am done with a book of Haskell and being a total hack at Haskell with very little skills (I did learn quite a bit of Lambda Calculus along the way) I think there is a BIG reason why Haskell has not grown in popularity in language usage and is beat by Scheme and almost beat out by ML. The experience pales to the praise and mind share in the vocal community of Haskell users.
评论 #10009696 未加载
评论 #10010008 未加载
tdees40将近 10 年前
Stack is great, but the public beta only started on June 9th. Stick with it, and I think it will solve many of the package management problems.
TazeTSchnitzel将近 10 年前
The Haskell Platform obscuring Cabal&#x27;s existence bit me. I didn&#x27;t know how to use Cabal, so for a while I didn&#x27;t install any packages, or know the correct way to build them.
评论 #10010562 未加载
评论 #10011167 未加载
zelos将近 10 年前
What I&#x27;d really appreciate (as one of those people who&#x27;s read LYAH and is struggling to get going with real code) is a Haskell equivalent of Effective Java or Effective C++.
评论 #10009478 未加载
jcl将近 10 年前
Agreed about the SEO of the documentation... I&#x27;m learning Haskell, and just last week I was trying to parse binary files using Data.Binary.Get. I spent a fair amount of time looking for a way to handle parse errors outside an IO monad. It turns out that the function I needed exists (runGetOrFail), but I couldn&#x27;t find it because the first Google hit for &quot;Data.Binary.Get&quot; was for an old version of the package.<p>I don&#x27;t know how one would tell Google to prefer the latest docs, but it would certainly help if the Hackage documentation page header warned you if you were not looking at the latest version of the docs.
AnimalMuppet将近 10 年前
&gt; But at the end of the day I’m still a Developer in an Academic world. And more and more Haskell is attracting the kinds of developers who don’t know Lambda Calculus or Type Theory.<p>Haskell&#x27;s ability to become a major language depends on its ability to attract, <i>and keep,</i> that kind of developer. There aren&#x27;t enough developers who will learn all the theory in order to learn a programming language for Haskell to become one of the dominant languages.
michaelochurch将近 10 年前
There is... certainly a learning curve. The Haskell community is still tiny. Per capita, it&#x27;s one of the best language communities out there. It just hasn&#x27;t had the thousands or millions of person-hours necessary to make everything pretty and intuitive.<p>I generally say that, all else equal, and if I were to use a GC&#x27;d language-- obviously, there are projects that mandate C or other low-level languages-- then I would use: Python for a short-term (days) project, Clojure for a medium-term (&lt; 3 months) one, and Haskell for a long-term (&gt; 3 months, or multi-developer) one. You don&#x27;t find yourself needing static typing if you&#x27;re doing a small, self-contained, line-of-business task like a script. You start to really want it for multi-developer programs and for infrastructural jobs that&#x27;ll take months to complete (and, at age 32-- that&#x27;s ancient in programming years-- the only programming challenges that really interest me are the hard ones where Haskell&#x27;s type discipline pays off in a major way).<p>Haskell will probably never beat Python in terms of ease-of-use, and (while I would prefer Haskell over other offerings for hard-core machine learning infrastructure) it has a ways to go before it can take over the exploratory data science world (we need data frames, and it&#x27;s not at all clear what the &quot;right&quot; way to impose type discipline on such beasts is).<p>All of that said, Haskell is <i>way</i> better than it used to be in terms of user experience. It&#x27;s gone from god-awful (circa mid-2000s) to hard-but-acceptable, and in the context of a longer-term project (i.e. at least 2 months) the uptake is a rounding error and the pain is paid off.<p>Furthermore, I don&#x27;t think that Haskell&#x27;s opt-out approach to laziness is more than a cosmetic issue. You can have as much strictness as you want; you just have to ask for it. However, high-performance programming in other languages (e.g. Clojure, Python) is also deeply technical and warty. When you start adding type hints and using Java arrays in your machine learning code, it doesn&#x27;t look like Clojure anymore. My point in all this is that HPC is technical and rough in all of the major languages, and Haskell&#x27;s laziness is just a small part of that.
评论 #10012762 未加载
maest将近 10 年前
That is a great band name.