In this old but relatively unknown paper by Tim Sheard, he describes a pure language which is strict by default but optionally lazy. Sounds boring, but there’s a twist: strictness is not tracked in the types, and there are a few annotations which make it possible to write code which is polymorphic in its strictness. This post is an exploration to see to what extent this addresses the problems with strict by default evaluation (nicely covered by Lennart Augustsson). Summary: it helps a bit in some cases, but laziness still wins.
I was watching this video about No Man’s Sky, a game that’s being advertised as “a science fiction game set in an infinite, procedurally generated universe”. One of the creators mentions here that each planet in the universe of the game is fully determined by a single 64 bit seed. From this one seed, every “every blade of grass, tree, flower, creature” is generated, and it’s all done lazily, as the world is observed by the player.
In between consulting work, wrapping up the book, and enjoying spending time with my new daughter, I’ve been doing some work on a new side project. I don’t have anything to release just yet, but it’s an exciting project for me and I decided I should start talking about it.
It’s the early days of man, a chilly day, and Alice and Bob are attempting to start a fire by rubbing sticks together. It’s a struggle, on account of some freezing rain earlier in the day that’s left the sticks damp. Suddenly, there is a brilliant flash of light, and a mysterious portal opens up next to Alice and Bob. A Stranger steps through carrying a blowtorch.
The Stranger explains he is from the Future and has come to speed along Alice and Bob’s technological evolution. He demonstrates use of the blowtorch and has a roaring fire going within a minute or two. He explains how the torch works by burning a substance called butane.
Bob’s immediate response: “Look Stranger, I don’t know who you are, but I don’t like your elitist tone, and I’m going to keep starting my fires by rubbing sticks together. If I start using your so-called ‘blowtorch’, it’s going to be a real problem finding ‘butane’ fuel for it.”
Update: I changed the title of this post and toned it down considerably to be less trollish. There was also some confusion / disagreement about the meaning of the term “zipper”, so I’ve tried to clarify that as well.