CS 833

I haven’t updated the blog in a bit, so I thought I’d write a bit about what’s happened. First of all, I have some vindication for my 833 project, yesno. This past week there was a small thread on comp.functional about Boehm GC on OS X and how it sucks. Apparently there is some problem with reliably getting the registers on OS X—one poster claimed it to be “Apple’s fault”. In any case, I don’t feel so bad about having to work around libgc weirdness with yesno now.

My 833 project apparently went alright too. I was nervous handing it in, as ghc is fickle to get compiling and working, and I just sort of duct taped it together as best I could and handed it to Watt, half-expecting him to email me back the next day saying “how in the hell do you get this thing working?”. But I checked my mark today: after two courses I’m now sitting with a 100.0 GPA—it’s a little unsettling—so I’ll have to talk to him some time and see what he liked about it.

I’ve shifted my focus to static analysis of functional languages with real-time applications: primarily guaranteeing time and memory constraints. I’m vaguely playing around with Martin-Löf type theory, trying to come up with a good model to capture caching policy, with the aim of hopefully coming up with some cool cache model to submit to POPL this summer.

This afternoon I’ve been reworking my presentation for yesno such that it’s suitable for UWORCS. This has involved gutting most of my slides, and not just because I need to cut it down for time. Yesno, for those who are not familiar, is a programming language which aims to be complete, i.e., every program must yield some values (“halt”). The trade-off is there is some inconsistency.

I have a more concrete idea of what yesno should and should not do now. A lot of my slides, when I was proposing the project, where I was totally off on what it should do. I’m also reminded of how basic yesno is: it’s got a long road of revision and research and refinement ahead of it before it’s broadly usable. If the evolution of a programming language is like chiselling marble, then mainstream languages have abandoned even the most minute chisel in favour of polish, and I’m still whacking away with a sledgehammer.

But, it’s reaffirmed my interest in a complete framework. It’s a bit too far off to say whether completeness/inconsistency is best served by a language or a library/macro system for some existing language. At this point I think a language serves the purpose well, but who knows.

It seems to me that there’s use for using data that hasn’t been finished computing yet. A web browser that’s rendering a half-loaded page, or even in soft real-time applications, providing some sort of result because you’re running out of time. It’s a nice framework for these things, I think, and one which hasn’t had its fair due of research attention.

I may even pick up yesno again in the summer and actually formalize the semantics and what’s missing about the semantics. It worked as a class project, but there are some quite large holes in the semantics that need serious thought.

For the past few days I’ve been working on my poster in Pages, part of Apple’s iWork package. So far I have to say it’s pretty slick, though there is a learning curve.

Here’s a low-resolution preview of my poster for UWORCS:

Trying to explain yesno on a poster is exceedingly difficult, especially if you want the broad strokes to catch the reader’s eye at some distance. And I’m quickly running out of room…I may have to shrink some of the text by a few points. Keep in mind this poster is tentatively A0 sized, about 120cm by 80cm. And I have to fix the colour in a lot of places. But so far I’m pleased with my results.