TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Writing about Haskell is Hard

10 pointsby danidiazover 3 years ago

4 comments

unhammerover 3 years ago
&gt; Let’s say I wanted to introduce Jordan at work, as part of a drive for a Haskell web service. I’d have to explain to everybody what the hell Rank-N types are<p>If so, that&#x27;s a problem of jordan&#x27;s documentation. If it&#x27;s documented with enough practical examples of how to get things done, and it&#x27;s not buggy, no one needs to know about how it does it, or even why we have to write &quot;forall&quot; here. And I see from the article that it even uses generic so you can get instances derived for you (probably don&#x27;t even have to add the RankNTypes pragma in your own files). Even the hand-written examples of <a href="https:&#x2F;&#x2F;github.com&#x2F;AnthonySuper&#x2F;jordan&#x2F;blob&#x2F;master&#x2F;jordan&#x2F;README.md#example" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;AnthonySuper&#x2F;jordan&#x2F;blob&#x2F;master&#x2F;jordan&#x2F;RE...</a> don&#x27;t seem to require any esoteric knowledge. But it&#x27;s probably hard to write about Haskell without showing off all the fancy features that make things work under the hood :)<p>I remember following <a href="http:&#x2F;&#x2F;www.serpentine.com&#x2F;wreq&#x2F;tutorial.html" rel="nofollow">http:&#x2F;&#x2F;www.serpentine.com&#x2F;wreq&#x2F;tutorial.html</a> years ago for work while starting out with Haskell. It introduced the absolute minimal stuff needed for lens (I didn&#x27;t delve any deeper into lens than what the tutorial showed), and I was immediately productive. Now I took a quick look at the source of wreq and the first file I see has RankNTypes, GADT&#x27;s, etc. and I never knew.
josephcsibleover 3 years ago
Does it matter that a blog post about an advanced Haskell topic isn&#x27;t understandable by people who don&#x27;t know basic Haskell? You wouldn&#x27;t fault a calculus textbook for being incomprehensible to someone who doesn&#x27;t know algebra. How is this any different than that?
评论 #29221332 未加载
ggmover 3 years ago
Writing about fnsrgle is hard. You want to explain the floofies but whe you spronge the blaly nobody can rebinnle the magrafan.<p>Look, it&#x27;s simple. The magrafan is the problem because speexzle but watrea 24 Avery haalso fnsrgle.<p>This is why reading about Haskell is hard. Because you need to explain fnsrgle using ordinary words, and then explain floofing, but you cannot use blintzes to explain floofing, or concepts like higher order types, or applicative, or any of a multitude of concepts which are alas given, to understand Haskell.<p>Happy rebinnle-ing
throwaway81523over 3 years ago
This is weird and confusing and the typescript stuff didn&#x27;t help. The author seems to advocate a voodoo approach to Haskell, where you copy&#x2F;paste code without understanding what it does. This is never a good idea. If you&#x27;re in a Haskell shop, rank N types aren&#x27;t that far &quot;out there&quot;, and are maybe more easily explained in GADT syntax. The GHC manual also documents them, and including a link might have been enough.[1]<p>It seems to me that there are much more serious barriers than rank N types to getting a useful production service running in Haskell. I think I can understand rank N types. I would not, at the moment at least, trust myself to deploy a Haskell service in production.<p>Jordan, on the other hand, looks pretty cool. Data.Binary had something in the same spirit using Scrap Your Boilerplate generics (iirc), but it wasn&#x27;t as flexible.<p>[1] <a href="https:&#x2F;&#x2F;downloads.haskell.org&#x2F;ghc&#x2F;latest&#x2F;docs&#x2F;html&#x2F;users_guide&#x2F;exts&#x2F;rank_polymorphism.html#extension-RankNTypes" rel="nofollow">https:&#x2F;&#x2F;downloads.haskell.org&#x2F;ghc&#x2F;latest&#x2F;docs&#x2F;html&#x2F;users_gui...</a>