Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    C

    Chris Smith

    cdsmith.wordpress.com · Personal blog · on HN since 2007

    Chris Smith writes about Haskell, type systems, and teaching programming to kids with a small subset of Haskell.

    Visit blogHN submissions
    Languages & CompilersProgramming
    What HN says

    HN commenters repeatedly point to his "What To Know Before Debating Type Systems" as the classic reference, and follow his Haskell for kids experience.

    Stats for nerds
    34HN people shared it
    32linked in comments
    394story points
    Jul 2025last shared
    2011people per year2025

    Top posts on HN

    1. 1
      What to Know Before Debating Type Systems (2008)
      14 people · 244 points · first shared 2011 · 131 comments on HN
    2. 2
      Haskell’s Niche: Hard Problems
      1 person · 80 points · first shared 2011 · 45 comments on HN
    3. 3
      Why Do Monads Matter?
      4 people · 19 points · first shared 2012 · 1 comments on HN
    4. 4
      Haskell For Kids
      1 person · 11 points · first shared 2011 · Discussion on HN
    5. 5
      Big Ideas for Haskell
      1 person · 6 points · first shared 2011 · Discussion on HN
    6. 6
      The "X Improves My Design Anyway" Myth
      1 person · 4 points · first shared 2007 · Discussion on HN
    7. 7
      "Industry-Driven" Computer Science Education
      1 person · 4 points · first shared 2011 · Discussion on HN
    8. 8
      Iteratees Step By Step
      1 person · 4 points · first shared 2010 · 1 comments on HN
    9. 9
      Catching a Mathematical Error Using Haskell’s Type System
      1 person · 4 points · first shared 2009 · 1 comments on HN
    10. 10
      ICFP Contest Retrospective
      1 person · 2 points · first shared 2010 · Discussion on HN

    What HN people wrote when they linked it

    • mumblemumbleDec 2020

      > Some people like more restrictive languages, because they don’t trust others or themselves to reliably use good discretion in the use of powerful features

      For me, it's not even that. It's that I've discovered that, even when used with discretion, the simple presence of powerful features still makes it harder to reason about how things work. Discretion around powerful features isn't a one-and-done thing; it's an ongoing process of double-checking and verifying for yourself whether that feature is being used properly every time you touch or interact with code that uses it.

      A common thread in many seminal papers and essays in the history of programming languages ("Can Programming be Liberated from the Von Neumann Style", "GOTO Statement considered harmful", "Lambda: The Ultimate GOTO", to name a few.) is that, ironically enough, when you take a bird's eye look at things, reducing the power of the tools tends to increase the power of the programmer.

      I should say, I'm not meaning that to be a statement in favor of static or dynamic typing; I try to stay out of that debate.[1] To me, the real problem with JSON is that, at least under typical usage, it tends to be weakly typed. (Which is a powerful feature; strong typing is a way of restricting what you can do.) JSON's type system is less expressive than that of basically any well-known programming language, including JavaScript itself, and, out of necessity, people tend to deal with that by overloading its types in ways that…

    • jerfSep 2011

      I'm not sure the fact that kids can "learn" language X proves much, because generally we're teaching kids language X so they can take some kid-friendly subset of the language and do kid projects in it. This is great on its own, but showing that kids can learn Scala or Haskell doesn't necessarily mean that they're going to be able to program in it.

      Here's a group using Haskell: http://cdsmith.wordpress.com/2011/09/03/haskell-for-kids-week-3/ Are they choking and dying because Haskell is just too magically difficult for children to learn? Goodness, no. On the other hand, does this prove that Haskell is never confusing when you're three layers deep in monad transformers trying to use a parsing library and you get a twenty-line error message about a failure to unify types with type signatures bigger than Twitter will let you post full of "a" and "t1" and "t2" and "t3"s?

      I mean, let's be honest, that just doesn't happen when you're using Python or Perl. (It can in Java, but still a lot of times it's just verbose, vs. Haskell's actual complexity.)

    • danieldkSep 2011

      Somewhat related: Chris Smith is teaching kids programming using a tiny subset of Haskell, the Gloss graphics library, and a web framework that he built around Gloss, using the SafeHaskell extension.

      His experiences can be followed through his blog. Previous posts:

      http://cdsmith.wordpress.com/2011/08/16/haskell-for-kids-week-1/

      http://cdsmith.wordpress.com/2011/08/23/haskell-for-kids-week-2/

      http://cdsmith.wordpress.com/2011/09/03/haskell-for-kids-week-3/

      http://cdsmith.wordpress.com/2011/09/10/haskell-for-kids-week-4/

      Well worth the read, and a good example of how programming can be taught to children.

    • pmoriartyOct 2017

      "Having tried both, I've found that the ML-derived languages tend to have a stronger type system that's more rigorously enforced at compile time. I personally find this much more valuable in practice than some of the dynamic magic that you can do with lisp."

      You probably meant to contrast ML's static typing (not strong typing) with Lisps's dynamic typing. See "What To Know Before Debating Type Systems":

      https://cdsmith.wordpress.com/2011/01/09/an-old-article-i-wrote/

    • dprydenJul 2025

      I think you might be thinking of https://cdsmith.wordpress.com/2011/01/09/an-old-article-i-wrote/

      It says:

      > I give the following general definitions for strong and weak typing, at least when used as absolutes:

      > Strong typing: A type system that I like and feel comfortable with

      > Weak typing: A type system that worries me, or makes me feel uncomfortable

    • joluxNov 2018

      https://cdsmith.wordpress.com/2011/08/16/haskell-for-kids-week-1/

      Books like The Haskell School of Expression have been teaching functional programming using simple graphics in Haskell for a long time. Need I remind you that the entire concept of a Turtle comes from Logo, which is Lisp minus parentheses?

    Related

    Haskell for Allhaskellforall.com190 people

    The category design pattern

    Haskell for All
    Personal · last shared 2026
    Existential Typeexistentialtype.wordpress.com157 people

    Haskell Is Exceptionally Unsafe (2012)

    Existential Type
    Personal · last shared 2026
    Luke Palmerlukepalmer.wordpress.com35 people

    IDE WTF

    Luke Palmer
    Personal · last shared 2020
    Edward Z. Yangblog.ezyang.com165 people

    PyTorch Internals: Ezyang's Blog

    Edward Z. Yang
    Personal · last shared 2026
    Storytotellstorytotell.org18 people

    Free your technical aesthetic from the 2010s

    Storytotell
    Personal · last shared 2026
    Chris Allenbitemyapp.com35 people

    Why the poor are poor

    Chris Allen
    Personal · last shared 2025
    Kenny Tiltonsmuglispweeny.blogspot.com29 people

    Ooh Ooh My Turn Why Lisp? (2008)

    Kenny Tilton
    Personal · last shared 2021
    Apfelmusapfelmus.nfshost.com22 people

    How Does Lazy Evaluation Work in Haskell? (2014)

    Apfelmus
    Personal · last shared 2023