Fun wth ΠΣ
I have somewhat irrationally chosen ΠΣ as the core language for Dana. I’ve been struggling to create a small, beautiful implementation. But I am getting closer and closer — it’s just about finding the right combination of representations so they fit together nicely — and my hope is that when I am finished the implementation [...]
A world without orphans
An orphan instance is where you have a situation like this: module Foo where class Foo a where foo :: a module Bar where newtype Bar = Bar Int module Baz where instance Foo Bar where foo = Bar 0 I.e., a class is instantiated with a type in a module where neither the class [...]
Existential Memoization
FRP has this essential trade-off of computation vs. garbage collection. I can come up with implementations which are lazy in their computation, but never forget anything; and I can come up with implementations which forget but are too eager in their implementation (in which garbage collection has too much effect on runtime performance, because we [...]
The Third Virtue
Ever since working with the Anygma team, the idea of a purely functional operating system has been stirring in my head: An operating system that stays denotational and composable all the way down to the device drivers. In this world, we have to make no sacrifices like IO to interface with the impure ideas around [...]
How to shrink a git repository
I thought I would blog about this, because I’ve tried and failed in the past, and it just took a lot of tinkering to figure out. The problem is this: I have a git repository with a game in it, and a long time ago thought it would be a good idea to add the [...]
Freewrite
Here’s a freewrite. I am going to write stuff, I don’t know what, because there isn’t all that much to talk about, or at least that’s what I’ve been saying. Pause. Can’t do that. Okay keep writing. I don’t know if I’m even going to publish this as private which my mom reads. But whatever, [...]
Use MonadRandom!
For quite a while, a package called MonadRandom by Cale Gibbard has been available on Hackage. At first it seems like just a little silly convenience module. But I argue that it should be used instead of System.Random whenever possible, not just when it’s more convenient. Here’s why: What’s a RandomGen? class RandomGen g where [...]
Ha! I can’t even get Events right
No wonder FRP has been so difficult. In going back to basics, forgetting about behaviors and just doing Events, I realize that my belief that Events are “the easy part” has been flawed. Neither of the semantics I’ve had in mind are both implementable and appropriate. Or rather, they both are, but neither of them [...]
Ridding ourselves of IO before there is a good replacement
I have been researching FRP for about a year now without finding or discovering an implementation I like. I don’t know if there is one — maybe my standards are just too high. However, it has initiated me into the more general interest of purely functional foundations. Since I am tired of thinking and want [...]

Recent Comments