ezyang’s blog

the arc of software bends towards understanding

December, 2010

A year of blogging

Here is to celebrate a year of blogging. Thank you all for reading. It was only a year ago that I first opened up shop under the wings of Iron Blogger. Iron Blogger has mostly disintegrated at this point, but I’m proud to say that this blog has not, publishing thrice a week, every week […]

  • December 31, 2010

Greetings from Switzerland

“Roughing it,” so to speak. With no reservations and no place to go, the hope was to crash somewhere in the Jungfrau region above the “fogline” but these plans were thwarted by my discovery that Wengen had no hostels. Ah well. Still pretty. Of which I do not have a photo, one of the astonishing […]

  • December 29, 2010

No one expects the Scott induction!

New to this series? Start at the beginning! Recursion is perhaps one of the first concepts you learn about when you learn functional programming (or, indeed, computer science, one hopes.) The classic example introduced is factorial: fact :: Int -> Int fact 0 = 1 -- base case fact n = n * fact (pred […]

  • December 27, 2010

Thriller: Doing it for the thrills

How do you decide what to work on? I started thinking about this topic when I was wasting time on the Internet because I couldn’t think of anything to do that was productive. This seemed kind of strange: there were lots of things I needed to do: vacations to plan, projects to work on, support […]

  • December 24, 2010

Travel advisory

I will be in the following places at the following times: Paris up until evening of 12/22 Berlin from 12/23 to 12/24 Dresden on 12/24 Munich from 12/25 to 12/26 Zurich on 12/27 Lucerne from 12/28 to 12/29 Plans over the New Year are still a little mushy, so I’ll post another update then. Let […]

  • December 21, 2010

Generalization and vagueness in specifications

What semantics has to say about specifications Conventional wisdom is that premature generalization is bad (architecture astronauts) and vague specifications are appropriate for top-down engineering but not bottom-up. Can we say something a little more precise about this? Semantics are formal specifications of programming languages. They are perhaps some of the most well-studied forms of […]

  • December 20, 2010

Tourist by day, Blogger by night

In which Edward travels France Many, many years ago, I decided that I would study French rather than Spanish in High School. I wasn’t a particularly driven foreign language learner: sure I studied enough to get As (well, except for one quarter when I got a B+), but I could never convince myself to put […]

  • December 17, 2010

ω: I’m lubbin’ it

New to this series? Start at the beginning!. Today we’re going to take a closer look at a somewhat unusual data type, Omega. In the process, we’ll discuss how the lub library works and how you might go about using it. This is of practical interest to lazy programmers, because lub is a great way […]

  • December 15, 2010

Getting a fix on fixpoints

Previously, we’ve drawn Hasse diagrams of all sorts of Haskell types, from data types to function types, and looked at the relationship between computability and monotonicity. In fact, all computable functions are monotonic, but not all monotonic functions are computable. Is there some description of functions that entails computability? Yes: Scott continuous functions. In this […]

  • December 13, 2010

Errata for gin and monotonic

Between packing and hacking on GHC, I didn’t have enough time to cough up the next post of the series or edit the pictures for the previous post, so all you get today is a small errata post. The full list diagram is missing some orderings: ★:⊥ ≤ ★:⊥:⊥ and so on. In usual denotational […]

  • December 10, 2010