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.

Letter to a Young Haskell Enthusiast

332 pointsby psibialmost 11 years ago

25 comments

joslin01almost 11 years ago
This is one of the best essays addressed to programmers I&#x27;ve ever read. It speaks to you on a very personal level. Highlights:<p>&gt; Haskell wasn’t built on great ideas, although it has those. It was built on a culture of how ideas are treated.<p>&gt; In functional programming, our proofs are not by contradiction, but by construction. If you want to teach functional programming, or preach functional programming, or just to even have productive discussions as we all build libraries and projects together, it will serve you well to learn that ethic.<p>&gt; Believe in everyone, attack nobody, even the trolliest.<p>&gt; If you make even the most modest (to your mind) mistake, be it in social interaction or technical detail, be quick to apologize and retract, and do so freely. What is there to lose? Only your pride. Who keeps track? Only you. What is there to gain? Integrity<p>&gt; Your self-esteem doesn’t need your help. You may feel you need to prove yourself, but you don&#x27;t. Other people, in general, have better things to do with their time than judge you, even when you may sometimes feel otherwise.<p>&gt; Be glad that others are charting other paths! Who knows what they will bring back from those explorations.<p>&gt; Every time we learn something new and want to share it, we face these issues all over again -- the desire to proclaim, to overturn received wisdom all at once -- and the worse the received wisdom, the more vehemently we want to strike out. But if we are generous listeners and attentive teachers, we not only teach better and spread more knowledge, but also learn more, and enjoy ourselves more in the process.
评论 #8124395 未加载
VMGalmost 11 years ago
It starts out from kind of weird premise<p>&gt; Now, you’re a social person, and you want to go forth and share all the great things you’ve learned. And you have learned enough to distinguish some true statements from some false statements, and you want to go and slay all the false statements in the world.<p>I learned some Haskell recently and I&#x27;m somewhat enthusiastic about it. It&#x27;s a very difficult language, I took a lot of effort to learn Haskell compared to most other languages. It&#x27;s still difficult to understand other libraries and code. But personally, For me, it was worth the effort to learn and understand it.<p>I don&#x27;t think it&#x27;s worth the effort for everybody. I don&#x27;t think it&#x27;s fun for everybody. I don&#x27;t think it&#x27;s the best tool for everything. I have no desire to spread the good word.<p>If you start from the premise that it&#x27;s the best language out there, everybody should learn it and that it is easy, you&#x27;ll get into trouble.<p>Edit: I don&#x27;t get the downvotes -- maybe I did not express myself clearly?
评论 #8137581 未加载
评论 #8119911 未加载
评论 #8120207 未加载
roymurdockalmost 11 years ago
Thanks for taking the time to formalize your thoughts in such a clear and elegant manner.<p>Everyone needs a periodic reminder to keep their ego in check. On the one hand it drives ambition, spurs achievement, and encourages personal development. There is almost unlimited power in the concept of self.<p><i>Me</i> against the world. <i>My</i> achievements.<p>I think this attitude is very prevalent in programming and the tech world in general. It is manifested and reinforced by the wild popularity of startups (<i>My</i> idea is good and <i>I</i> can go it alone) and the tech visionaries (Gates, Jobs, Musk) who seem to carry the weight of the world on their shoulders.<p>On the other, overfeeding your ego will make you narcissistic, selfish, insecure, and hostile. You will lose your empathy for others, and ultimately, your humanity, as you start to lose sight of the big picture: progress is a process that started long before your time and that will continue unimpeded to infinity, even after your infinitesimally tiny ego is wiped from existence.<p>As Isaac Newston put it best: &quot;If I have seen further it is by standing on the shoulders of giants.&quot;
评论 #8119065 未加载
评论 #8119244 未加载
评论 #8119495 未加载
评论 #8119076 未加载
hibikiralmost 11 years ago
I&#x27;ll go against the grain and say that it&#x27;s a pretty dangerous article.<p>What it wants you to do, slay false statements and spread what you know, is exactly the kind of thing that goes terribly the minute you fail to figure out what is true and what is false. Very few things in computing are really black and white, but spending our time proselytizing just leads to more thinking in a black and white world, and adoption of technologies that might leads us in the completely wrong direction (Hello Spring!)<p>What we have to tell a young language enthusiast is that there is much insight in ideas different than our own, and that there is much to learn in looking outside of what you consider the best. Maybe there are tools that are better suited for other kinds of problems. Maybe not everyone that disagrees with you is very wrong about things and needs to be converted.<p>I mean, how can you even try to ask people to improve their communication skills, when you say that people that do not think programming is math is because they have the wrong notion of math?! I just don&#x27;t see how you are going to convince anyone of anything with that level of condescension.<p>Frankly, and being a bit meaner than I should, it seems to me that the reason Haskell can&#x27;t catch on is precisely that enough of its community thinks like this.
评论 #8119549 未加载
评论 #8119547 未加载
评论 #8119537 未加载
评论 #8119439 未加载
评论 #8131146 未加载
tekacsalmost 11 years ago
It&#x27;s a shame this is titled to target Haskell developers - it feels like it would be a good read for most young developers.<p>(though I can see how the endless feature-incorporating (typeclass-based) refactor cycle is particularly relevant to Haskell - come to think of it, I think many somewhat older Haskell developers could stand to take from this too)
评论 #8119417 未加载
评论 #8121752 未加载
评论 #8124398 未加载
dustingetzalmost 11 years ago
&quot;<i>You do not tell them this is a language for smart people. You do not tell them you are smart because you use this language. You tell them that types are for fallible people, like we all are. They help us reason and catch our mistakes, because while software has grown more complex, we’re still stuck with the same old brains. If they tell you they don’t need types to catch errors, tell them that they must be much smarter than you, because you sure do.</i>&quot;<p>This tactic is used a lot in evangelism talks and it doesn&#x27;t work. A lot of the non-FP people listen to these talks and come away thinking, &quot;this person is <i>obviously</i> really smart&quot;, and then it comes up in the discussion afterwords, so not only is it unhelpful, but it distracts from the message and perpetuates exactly the myth that we&#x27;re trying to dispel. We have to calibrate to the audience&#x27;s understanding of relative words like &quot;smart&quot;.
评论 #8121066 未加载
a-nikolaevalmost 11 years ago
The article addresses a real problem. Haskell is presented by its neophytes as some uber-arcane thing that cannot be understood by a mere average programmer, you have to learn algebra first!, and read all Martin-Lof, and whatever else. And it hampers adoption of the language by many other people who might be offended by such superiority attitudes.<p>However, it is much healthier to present Haskell as simply a tool for writing better and safer code, which is frequently easier to reason about than your conventional for-loops all the way down. So everyone should try it, and say for themselves.<p>I may be wrong and over-generalizing here, but Haskell is a very convenient vehicle for showing off and belittling others. And honestly, who does not want to stick Haskell somewhere in their CV just to look better nowdays? Being fancy has a cost for the language. This is not an intrinsic fault of Haskell. People just need such a thing. If there were no Haskell, we would have APL, Lisp, Erlang, C++, or something like this.
评论 #8119884 未加载
评论 #8121487 未加载
egeozcanalmost 11 years ago
I&#x27;m not a Haskell developer but the main idea in this article is big enough that it can be applied to any situation where you feel that you know better.<p>Years pass and I always feel that I got rid of this &quot;proving that I know better&quot; motive but, every time I look back, I always see that I still acted with it and it was usually me who could do better. At the very least, I always feel that I could do better in the social area - like, communication.
jeffreyrogersalmost 11 years ago
It looks like I&#x27;m one of the few people on here not excited about Haskell. Functional programming is great. Static typing is nice, yes. Hindley-Milner type-inference even moreso, but I often find the language getting in my way. Now, I&#x27;m not a Haskell expert, but I have used OCaml for some fairly sophisticated problems in the past (basic optimizing compilers). So I&#x27;m curious for the people who have used Haskell for something substantial whether they&#x27;ve found their experiences match with mine.
评论 #8122960 未加载
评论 #8120661 未加载
michaelfeathersalmost 11 years ago
I like the Ruby version of this: &quot;Matz is nice, so we are nice.&quot;<p><a href="http://blog.emmacodes.com/post/55841830917/minswan" rel="nofollow">http:&#x2F;&#x2F;blog.emmacodes.com&#x2F;post&#x2F;55841830917&#x2F;minswan</a><p>Interesting to note how two different language cultures manage to say this.
soperjalmost 11 years ago
I actually learned some Haskell during my CSC degree, and it was actually a language that I took to really easily and enjoyed. I actually went home and made sure I could write haskell programs at home. It&#x27;s been 8 years now though and for the life of me I&#x27;ve never been able to think of something I&#x27;d use it for.
评论 #8122957 未加载
评论 #8122971 未加载
pestaaalmost 11 years ago
Nice attitude, that&#x27;s for sure. However I feel like this is targeted at the open source community. At work, it sucks to be better, because I&#x27;ll get the harder bugs, deeper work, more work, tough refactorings, architecture planning, and everything that programmers who can&#x27;t even write decent PHP can&#x27;t do.
评论 #8118989 未加载
评论 #8120043 未加载
评论 #8119026 未加载
评论 #8118966 未加载
评论 #8119129 未加载
评论 #8119160 未加载
anmonteiro90almost 11 years ago
So.. wise. Thanks for this, I&#x27;ll save it to read every few months.<p>This is something I always struggle against, but ends up coming to bite me sometimes.<p>I also believe that there could be a more general version available for either&#x2F;both:<p>- other programming languages &#x2F; paradigms;<p>- other fields of research
评论 #8119033 未加载
ankurdhamaalmost 11 years ago
It happens with humans in general, probably one of the cognitive fallacies. Whenever we gain new knowledge, we get infatuated with it and for the period of infatuation we block out everything else. It could be any kind of knowledge gain - &quot;Hey I know the shortest path to office and I don&#x27;t care what path you take or suggest, mine is the best one&quot;.<p>My message would be this: &quot;It is amazing what we know or learned, but what is more amazing is the stuff we don&#x27;t know yet - so be curious, not infatuated&quot;.
bilalhusainalmost 11 years ago
May be the reason I want to learn Haskell but it never embraces me back is that I enjoy snarky and condescending comments on HN.
评论 #8120156 未加载
amirmcalmost 11 years ago
This is a great article and the ideas go <i>way</i> beyond Haskell and programming. We are <i>all</i> still learning and our interactions with people can be much better if we remember that.<p>In some sense, it also reminds me of the xkcd comic on learning new things <a href="http://xkcd.com/1053/" rel="nofollow">http:&#x2F;&#x2F;xkcd.com&#x2F;1053&#x2F;</a>
kelvin0almost 11 years ago
Wow, so many truths and core principles about life and social interaction in such a concise post. I have started &#x27;fiddling&#x27; with Haskell recently but after reading this I realize I have some serious work to do with my interpersonal skills and communication and being more considerate to others. Enlightening on all fronts..
vorgalmost 11 years ago
&gt; Remember also that they were put off by your actions, not by your existence<p>Some people can be put off by your name, like when their primary interest is their product is marketing its name rather than the technical merits of the product.
Ono-Sendaialmost 11 years ago
&quot;It is not a language that is “more mathematical” or “for math” or “about math”. &quot;<p>I disagree, Haskell (and other functional languages) are a lot more similar to traditional maths than other languages.
评论 #8120566 未加载
评论 #8119759 未加载
Vektorwegalmost 11 years ago
For me, it sounds like: go and study anthropology&#x2F;ethics. Would be better for everyone.
fasteoalmost 11 years ago
tl;dr<p>&quot;Nothing is worse than active ignorance.&quot; Johann Wolfgang von Goethe
innguestalmost 11 years ago
Haskell just clicked for me not long ago after 4 years of revisiting it periodically, writing one-liners and small programs, and reading tons of material on it. All the tutorials in the world weren&#x27;t helping it click for me.<p>But then somehow I finally understood that Haskell is (trying its best to be) Math. I had a deeply mistaken idea of what math is and I thought I &quot;hated&quot; it and that any kind of advanced math is too hard for me. I have failed Calculus before, though I&#x27;ve always done well in discrete math.<p>It was only when I realized that math begins (or does it?) with what you have (objects, sheep, anything you want to count) and what you can do with them (group, make a set, join two sets, etc). Then I went into a reading spree about all ofthose very basic and foundational aspects of pure math (pure as in &quot;look around you, you can count things, you can group them based on some trait, you can do operations based on groups, you can now think of those groups as the entities to focus on, you can prove certain properties about those groups, etc&quot;) and I found it amazing that so much can be known and discovered from starting with just what you see around you.<p>When I understood that math starts with just looking around you then I finally made peace with math, and I saw that it was good, that it was here to help me. Then I looked at Haskell again, and suddenly Void, Unit, Either, Maybe, they all made perfect sense. Maybe is a function that takes your set and gives you a new set that looks the same, but has a special entity that means &quot;the lack of an entity in this set&quot;; in other words, Maybe adds a zero to a type. It&#x27;s simple and easy for me when I choose to see it that way. Everything is a lot more concrete and I have even drawn all these concepts and they map very well to visual ideas. So many things in Haskell are recurring themes (like adding a zero, starting things with a &quot;one&quot; entity, etc) that if you have a good relationship with math, many things fall into place just nicely.<p>But I started Haskell hating math and that has held me back so much. So my advice would be to never deny that Haskell is math, but to explain what&#x27;s so awesome about math, how it gives us so much certainty even if we only assume very basic and seemingly obvious statements. I could have used some rough advice like &quot;listen, stop whining about math, you&#x27;re wrong about what you think math is, it&#x27;s much more fundamental and it&#x27;s a tool to help you organize any set of ideas you have, so why would you not apply that to programming?&quot;
评论 #8120719 未加载
评论 #8120525 未加载
评论 #8119915 未加载
评论 #8119784 未加载
评论 #8120305 未加载
评论 #8119684 未加载
评论 #8121909 未加载
jackmaneyalmost 11 years ago
&gt; This is not a language for clever people, although there are clever things that can be done in this language. It is a language for simple things and clever things alike, and sometimes we want to be simple, and sometimes we want to be clever. But we don’t give bonus points for being clever.<p>I&#x27;m reminded of the adage about mathematics: think deeply of simple things.
michaelochurchalmost 11 years ago
I think there&#x27;s a lot of value in this article (which really isn&#x27;t about Haskell; but more generally about being in the top 5% of programming). I can&#x27;t disagree with the idea that we should show more open-mindedness toward different approaches and civility to new entrants.<p>That said, I&#x27;m going to take a different tack, not because the OP is wrong, but just to explore a second orthogonal component.<p>As programmers, we have both a weak and a submissive tribal identity. That&#x27;s a problem, and we should change it. I call it &quot;weak&quot; because we aren&#x27;t good judges of who belongs and who doesn&#x27;t. The true bad guys (and, yes, they are quite <i>bad</i> and we must oppose them) have been commoditizing engineering work for decades by flooding the market with low-skill, untrained, &quot;software engineers&quot; (ScrumDrones, CommodityJavaDevelopers, etc.) in order to reduce top talent&#x27;s leverage in the market. It has created this mythology that talent and skill don&#x27;t matter, and while it&#x27;s completely wrong, the failures are delayed enough that the bad actors in the business can be promoted away from the problem until shit breaks.<p>Our fatal flaw? Instead of striking the bad actors in the business world, we attack those low-skill engineers, who might be infuriatingly incompetent, but really didn&#x27;t do anything wrong. (&quot;You&#x27;re just a PHP retard, so shut the fuck up.&quot;) The true bad guys don&#x27;t really care what happens to the CommodityScrumDrones, and that&#x27;s the point of having them is that they&#x27;re disposable. By attacking <i>them</i>, the unskilled pawns, we gain nothing. Sure, they&#x27;re incompetent and may be anti-intellectual (or, more likely, they just don&#x27;t give a shit about programming and shouldn&#x27;t be programmers, but aren&#x27;t stupid or bad people). But the anti-intellectualism we must fight is that of the businessmen who are driving us in to the ground.<p>I say it is a submissive tribal identity because this divide-and-conquer game <i>works</i>. Dysfunctional organizations and societies usually form three classes that matter. (There are subclasses within each related to prestige factors that don&#x27;t matter.) The High must keep the Middle and Low at odds with each other, lest they band together and overthrow the High.<p>In order to depress programmer wages and working conditions, the bad guys prevent professionalization and collective bargaining, create startup mythologies in order to make business bad actors look like real technologists, and flood the market with commodity programmers (the Low). Amazingly, the more skilled programmers (the Middle) will, driven by their disgust in sharing working conditions with the Low, actually work unreasonably hard and clean up their messes, just to out-compete them in a game that doesn&#x27;t really matter (the unskilled are never fired, and the overworked are rarely promoted). When this works as designed, they turn into the Clueless layer of the MacLeod model.<p>We <i>have</i> to fight the anti-intellectualism. We&#x27;ve let ourselves be typecast to <i>business subordinates</i> rather than technologists and it&#x27;s goddamn fucking disgusting. When some businessman says &quot;languages don&#x27;t matter&quot;, we have to humiliate him for his stupidity and anti-intellectualism, before he feels empowered enough to start hiring commodity engineers. We do have to fight, and we have to get nasty, and we have to crush our enemies. But we also have to stop clawing <i>at each other</i> over petty differences (e.g. tabs vs. spaces) and focus on the battles that matter.
评论 #8120140 未加载
评论 #8121067 未加载
评论 #8121696 未加载
kazinatoralmost 11 years ago
Techniques for implementing heterogeneous collections in Haskell:<p><a href="http://www.haskell.org/haskellwiki/Heterogenous_collections" rel="nofollow">http:&#x2F;&#x2F;www.haskell.org&#x2F;haskellwiki&#x2F;Heterogenous_collections</a><p>Good grief!<p>Lisp:<p><pre><code> &#x27;(123 a &quot;bc&quot; #(d)) </code></pre> Python:<p><pre><code> [1, &quot;abc&quot;, 4.0]</code></pre>
评论 #8121333 未加载
评论 #8123925 未加载
评论 #8121367 未加载
评论 #8121349 未加载
评论 #8124093 未加载
评论 #8121769 未加载