We already know that delimited continuations are more expressive than undelimited ones (
call/cc
). We can trivially express undelimited continuations by wrapping our entire program in a reset marker, while we need a mutable cell to express delimited continuations using
call/cc
.
There’s another very handy construct in programming that uses the call stack: dynamic variables. We know that dynamic variables and delimited continuations don’t play nicely with each other. Rather, there are several reasonable semantics for how they could work together, which means there is no obviously correct semantics for how they should work together. Of course, Oleg’s worked all this out for us: we want delimited dynamic variables. What are those?
On the idiomatic use of bind variables when writing lambda expressions:
I’ve recently acquired a Raspberry Pi, and was considering using it for SNES emulation. However, as it turns out that Zsnes is x86-only, and that Snes9x got kicked out of Debian a while back for having an annoying “no-commercial use” license, so we’re into the compile-it-yourself options. As Snes9x is a configure/makefile-type project, I should in theory be able to just compile in on the Pi directly, but then we hit the problem that it hasn’t got enough RAM to be able to do all the compiling… fine, fine, I’ll go back into the messy world of cross-compiling. (more…)
We have been using WebDriver (/Selenium) for doing functional testing of web applications. I have personally been involved in using WebDriver on .NET to automate testing of several .NET web applications. But in my spare time, I’ve discovered another use for WebDriver, which is automating interactions with websites.
You are currently browsing the LShift Ltd. blog archives for June, 2012.