Top all-time · #327
Robert Harper
Personal blog · existentialtype.wordpress.comprogrammingphilosophy
Robert Harper writes Existential Type, a personal blog at existentialtype.wordpress.com about programming and philosophy. Since 2011, 157 different Hacker News readers have linked it 247 times, most often “Dynamic Languages Are Static Languages (2011)”. The last post was in 2017, but the archive is still widely read.
Sometimes recommended · 8 of 40 sampled comments recommend it?
Why HN links it
HN readers cite Robert Harper's posts on dynamic typing ('unityped'), boolean blindness and parallelism, and recommend several as explanations and classic take-downs.
- Recommended for · 8 comments
- Called a 'delightfully snarky' take-down, a 'favorite' rant and a 'nice explanation'; recommended for boolean blindness.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- Dynamic Languages Are Static Languages (2011)27 people · 31 mentions · first linked 2011-03-21
- Boolean Blindness13 people · 16 mentions · first linked 2015-04-15
- Dynamic languages are static languages13 people · 15 mentions · first linked 2011-03-20
- Modules Matter Most (2011)11 people · 12 mentions · first linked 2011-04-18
- The Holy Trinity: Logic, Languages, Categories (2011)8 people · 9 mentions · first linked 2011-03-31
- Parallelism is not concurrency8 people · 8 mentions · first linked 2011-03-18
- Parallelism is not concurrency7 people · 7 mentions · first linked 2011-03-22
- Boolean Blindness6 people · 9 mentions · first linked 2011-04-06
- What, If Anything, Is a Declarative Language? (2013)6 people · 7 mentions · first linked 2013-12-25
- Existential Type, new blog by Bob Harper (of CMU) on programming languages5 people · 6 mentions · first linked 2011-03-21
What Hacker News says?
The word "type" has a specific meaning in maths/logic, which is not the same as that used by the "dynamic" languages community. Professor Bob Harper of CMU would refer to Python as unityped, i.e. having a single type: https://existentialtype.wordpress.com/2011/03/19/dynamic-lan...
Comment linking /2011/03/19/dynamic-languages-are-static-languages/
on “Python Is Eating the World”Submitted The Holy Trinity: Logic, Languages, Categories (2011) as a story · 111 points
HN discussionPython is not "strongly typed". Please don't repeat this phrase near management folk. Python just gives good error messages when it crashes at runtime, e.g. "expected an Int but got a String". This is better than a segfault, but it's still a crash. Call it "strongly tagged" if you like, but "type" unqualified should mean static type. Even "dynamic type" is a marketing hijack of the word type. Professor Robert Harper…
Comment linking /2011/03/19/dynamic-languages-are-static-languages/
on “Pyre: Fast Type Checking for Python”Submitted Haskell Is Exceptionally Unsafe (2012) as a story · 107 points
HN discussionThis is an extreme demonstration of the validity of a delightfully snarky blog post by Robert Harper on how dynamic typing is actually static typing using a unitype: https://existentialtype.wordpress.com/2011/03/19/dynamic-lan... A string is a Boolean is a number is a function, and braindead conversions can happen without anyone noticing. How does one keep their sanity using a language like that?
Comment linking /2011/03/19/dynamic-languages-are-static-languages/
on “A Javascript journey with only six characters”Submitted Summer of Programming Languages as a story · 101 points
HN discussion> I don't get this. Most of the known refactorings can't be easily implemented by IDEs so you're left with the trivial ones like renaming or moving things. First, the trivial ones are great and useful refactorings too -- and still difficult in dynamic type systems. Second, static types also benefit the more difficult refactorings that you still have to do manually, by giving you compiler errors and warnings when you…
Comment linking /2011/03/19/dynamic-languages-are-static-languages/
on “Announcing TypeScript 2.0”Submitted Haskell Is Exceptionally Unsafe as a story · 86 points
HN discussionThe idea that parallel code is executed through a concurrency mechanism should be hidden, but it doesn't mean that the distinction between the two should be. http://existentialtype.wordpress.com/2011/03/17/parallelism-... http://existentialtype.wordpress.com/2014/04/09/parallelism-...
Comment linking /2014/04/09/parallelism-and-concurrency-revisited/
on “Programming paradigms that change how you think about coding”Submitted Higher-Dimensional Type Theory as a story · 76 points
HN discussionIt is meaningless to nitpick about whether a language is declarative or not since the term "declarative" lacks a good definition. Robert Harper, a programming languages researcher, lists 6 separate definitions and concludes, "It seems to me that none of them have a clear meaning or distinguish a well-defined class of languages. " [1] [1] http://existentialtype.wordpress.com/2013/07/18/what-if-anyt...
Comment linking /2013/07/18/what-if-anything-is-a-declarative-language/
on “Why Racket? Why Lisp?”Submitted Parallelism is not concurrency as a story · 68 points
HN discussion> Python is dynamically typed and weakly typed, but still typed. People who claim that dynamic typing is a thing claim that Python is strongly typed. (This is of course nonsense; there's no such thing as dynamic typing, because types are by definition something that expressions in a language have, not something that runtime values have). > There's a nice explanation here: https://existentialtype.wordpress.com/2011/0…
Comment linking /2011/03/19/dynamic-lan..
on “Mercurial’s journey to and reflections on Python 3”Submitted Dynamic languages are static languages as a story · 54 points
HN discussion> None of that would be a problem in a typed language. Python is dynamically typed and weakly typed, but still typed. That's precisely the problem! The difference is just that a statically typed language gives you all the information, and a dynamically language doesn't, but still fails. Just without providing you the necessary information up-front. There's a nice explanation here: https://existentialtype.wordpress.c…
Comment linking /2011/03/19/dynamic-languages-are-static-languages/
on “Mercurial’s journey to and reflections on Python 3”Submitted It Is What It Is (And Nothing Else) – Why Recursion Still Matters as a story · 52 points
HN discussionHere are a bunch of blogs from my RSS reader that I think are worth reading. Some of them haven't updated in a while, but the archives may be worth a look anyway. * Blogs with a math focus: http://blog.sigfpe.com http://bit-player.org http://mathr.co.uk/blog/ https://www.johndcook.com/blog/ * Blogs with a programming languages focus: https://existentialtype.wordpress.com https://bluishcoder.co.nz http://blog.ezyang.…
Comment linking /
on “Ask HN: What programming blogs do you follow?”Submitted Modules Matter Most as a story · 47 points
HN discussionThanks for the response, I was being a bit tongue in cheek. I don't think you actually think it's awful :) And thanks for clarifying that. About concurrency vs. parallelism, I think it is fairly standard to think of them as two different concepts that overlap somewhat. You can have concurrency with parallelism (e.g. pthreads, or M:N threading where you map "green threads" on to processes that can run in parallel). Y…
Comment linking /2014/04/09/parallelism-and-concurrency-revisited/
on “We have to talk about this Python, Gunicorn, Gevent thing”Submitted The Point of Laziness (2011) as a story · 45 points
HN discussionI just want to add a link for people interested in this discussion. (Dynamic Languages are Static Languages by Robert Harper): http://existentialtype.wordpress.com/2011/03/19/dynamic-lang... With HN discussion here: http://news.ycombinator.com/item?id=2346590
Comment linking /2011/03/19/dynamic-languages-are-static-languages/
on “Steve Yegge: Notes from the Mystery Machine Bus”Submitted Of Course ML Has Monads as a story · 44 points
HN discussionThe problem's not on your end -- a lot of these blogs are just junk, probably the vast majority of ones that fall under "advocacy". As far as I can tell, the author's objection to conditionals is based on a misunderstanding of a different blog post[0]. It's nonsense. Really understanding where FP is coming from requires an introduction to programming language semantics[1]. Interesting stuff, but not immediately usef…
Comment linking /2011/03/15/boolean-blindness/
on “Destroy All Ifs – A Perspective from Functional Programming”Submitted Some advice on teaching FP as a story · 44 points
HN discussionI recommend Bob Harper's essay on "boolean blindness": https://existentialtype.wordpress.com/2011/03/15/boolean-bli... An excerpt: > The problem is computing the bit in the first place. Having done so, you have blinded yourself by reducing the information you have at hand to a bit, and then trying to recover that information later by remembering the provenance of that bit.
Comment linking /2011/03/15/boolean-blindness/
on “Destroy All Ifs – A Perspective from Functional Programming”Submitted Parallelism is not Concurrency as a story · 39 points
HN discussion"Haskell is, in my view, the world’s best imperative programming language, and second-best functional language" - Robert Harper ( https://existentialtype.wordpress.com/2011/04/09/persistence... )
Comment linking /2011/04/09/persistence-of-memory/
on “Rust as a gateway drug to Haskell”Submitted Teaching FP to freshmen as a story · 33 points
HN discussionNo "dynamically typed" is an oxymoron, and untyped or "unityped" is correct. Please read https://existentialtype.wordpress.com/2011/03/19/dynamic-lan... , the classic take-down of this mistake.
Comment linking /2011/03/19/dynamic-languages-are-static-languages/
on “Things I Was Wrong About: Types”Submitted Dynamic Languages Are Static Languages (2011) as a story · 23 points
HN discussion