Okay, here's the ICFP conference report, part one, including our trip out and the Scheme Workshop.
Maurice, Robby and I set off last Thursday from O'Hare to Schiphol Airport in Amsterdam, and from there to Tallinn Airport in Tallinn, Estonia. Strangely enough, as we were leaving O'Hare we ran into Matthew Flatt and a small entourage; strange because they started out in Salt Lake City and were going to Tallinn via a totally different route, but they happened to pass through O'Hare right as we were leaving. As you'd expect, there were about a million people going to Amsterdam for a million different reasons, but the people going from Amsterdam to Tallinn were much more likely to be headed for ICFP. At Schipol we ran into Paul Hudak, Mitch Wand, Dan Friedman, Eli Barzilay, Danny Dubé, and Ronald Garcia, all of whom were headed to the conference.
We arrived, and after we checked in to our hotel Maurice, Scott and I wandered around the city a bit to find the conference venue and get our bearings of the city. Here's a picture from then:
The next day was Scheme Workshop day. Here are my notes about that:
Type Classes Without Types
Haskell's type classes are good for facilitating C++-template-style "generic programming" — how can we get the same in Scheme? Ron Garcia introduced the idea of "predicate classes" that are like typeclasses but dispatched dynamically based on a predicate. Unfortunately there's a modularity problem with these — it's impossible for two modules to introduce two predicate classes each, where in each module one predicate class is more specific and one is more general than a typeclass in the other module. But it seems like a nifty programming paradigm related to predicate dispatch, and I'd sort of like to try it out.
Eager comprehensions
Sebastian Egner explained the design of SRFI 42, eager comprehensions; eager comprehensions are a sort of analog to Haskell comprehenesions that construct the list immediately rather than lazily. This was a very comprehensive talk, and Sebastian really gave the impression that he'd thought his design through. He even gave several performance numbers for the reference implementation. This was the first of two talks about Scheme loops we'd see over the week.
Abstraction and Performance from Explicit Monadic Reflection
So you want to thread a value through a scheme program and thus you use a monad. But you don't want to use the normal monadic combinator implementation because they're too slow. On the other hand, you really don't want to write the code without monads because you also really care about code clarity. So you use macros to implement the monads, and a thing called "monadic reflection". Jeremy Sobel's talk was energetic and fun.
An Operational Semantics for R5RS Scheme
This was my talk. Exciting! I'm not sure whether people followed me, or fell asleep, or what, but I think that at least some people followed me and appreciated some of the details I was trying to bring across. Most excitingly I found out that Martin Gasbichler has used PLT Redex to encode a hygienic macro system.
After that was lunch, followed by:
Commander S — the Shell as a Browser
A program written on top of scsh that improves with two major new features: a plug-in architecture for implementing "views" of particular commands' outputs, and a novel approach to job control. Pretty neat-looking. In Q & A people asked about piping — you'd like to be able to incrementally construct pipes, which seems like something Commander S should be able to facilitate, and also it's not obvious what view to use on the output of a pipe. It turns out this is an area where the system hasn't been fully fleshed out yet.
Ubiquitous Mail
Manuel Serrano showed us all about synchronizing IMAP servers with a Scheme system called bimap. The most interesting part was when he showed that you can use bimap to write Scheme programs for general mail processing, to implement policies like whitelists or whatever.
Implementing a Bibliography Processor in Scheme
I had never really thought about BiBTeX before, but it turns out that like all things TeX-related it's creaky and barely works and needs to be replaced. The author presented MLBiBTeX, a replacement with special multilingual features originally written in C and rewritten in Scheme.
The Marriage of MrMathematica and MzScheme
Chongkai Zhu presented his interface between PLT Scheme and Mathematica. It's neat to see these languages connected together.
ACT Parameterization Framework
An simulator for internal combustion engines written in Scheme.
Javascript to Scheme compilation
The author presented a neat Javascript compiler that compiles to Bigloo scheme. The semantics of Scheme and Javascript are similar, so mapping Javascript onto Scheme class systems seems to work well, and once the code is in Scheme they're able to take advantage of the excellent Bigloo compiler to get fast code. Performance is better overall than any existing Javascript system, though that's not fair since their compiler isn't quite ECMAScript compliant. During Q & A, they explained that two features it doesn't support that will likely hurt its performance are string-based field/method access and modification of globals via the global object. Overall this seemed like a very cool piece of work.
Okay, there's more to write up but I figured I should at least get the Scheme Workshop report up. More to follow.
Maurice, Robby and I set off last Thursday from O'Hare to Schiphol Airport in Amsterdam, and from there to Tallinn Airport in Tallinn, Estonia. Strangely enough, as we were leaving O'Hare we ran into Matthew Flatt and a small entourage; strange because they started out in Salt Lake City and were going to Tallinn via a totally different route, but they happened to pass through O'Hare right as we were leaving. As you'd expect, there were about a million people going to Amsterdam for a million different reasons, but the people going from Amsterdam to Tallinn were much more likely to be headed for ICFP. At Schipol we ran into Paul Hudak, Mitch Wand, Dan Friedman, Eli Barzilay, Danny Dubé, and Ronald Garcia, all of whom were headed to the conference.
We arrived, and after we checked in to our hotel Maurice, Scott and I wandered around the city a bit to find the conference venue and get our bearings of the city. Here's a picture from then:
The next day was Scheme Workshop day. Here are my notes about that:
Type Classes Without Types
Haskell's type classes are good for facilitating C++-template-style "generic programming" — how can we get the same in Scheme? Ron Garcia introduced the idea of "predicate classes" that are like typeclasses but dispatched dynamically based on a predicate. Unfortunately there's a modularity problem with these — it's impossible for two modules to introduce two predicate classes each, where in each module one predicate class is more specific and one is more general than a typeclass in the other module. But it seems like a nifty programming paradigm related to predicate dispatch, and I'd sort of like to try it out.
Eager comprehensions
Sebastian Egner explained the design of SRFI 42, eager comprehensions; eager comprehensions are a sort of analog to Haskell comprehenesions that construct the list immediately rather than lazily. This was a very comprehensive talk, and Sebastian really gave the impression that he'd thought his design through. He even gave several performance numbers for the reference implementation. This was the first of two talks about Scheme loops we'd see over the week.
Abstraction and Performance from Explicit Monadic Reflection
So you want to thread a value through a scheme program and thus you use a monad. But you don't want to use the normal monadic combinator implementation because they're too slow. On the other hand, you really don't want to write the code without monads because you also really care about code clarity. So you use macros to implement the monads, and a thing called "monadic reflection". Jeremy Sobel's talk was energetic and fun.
An Operational Semantics for R5RS Scheme
This was my talk. Exciting! I'm not sure whether people followed me, or fell asleep, or what, but I think that at least some people followed me and appreciated some of the details I was trying to bring across. Most excitingly I found out that Martin Gasbichler has used PLT Redex to encode a hygienic macro system.
After that was lunch, followed by:
Commander S — the Shell as a Browser
A program written on top of scsh that improves with two major new features: a plug-in architecture for implementing "views" of particular commands' outputs, and a novel approach to job control. Pretty neat-looking. In Q & A people asked about piping — you'd like to be able to incrementally construct pipes, which seems like something Commander S should be able to facilitate, and also it's not obvious what view to use on the output of a pipe. It turns out this is an area where the system hasn't been fully fleshed out yet.
Ubiquitous Mail
Manuel Serrano showed us all about synchronizing IMAP servers with a Scheme system called bimap. The most interesting part was when he showed that you can use bimap to write Scheme programs for general mail processing, to implement policies like whitelists or whatever.
Implementing a Bibliography Processor in Scheme
I had never really thought about BiBTeX before, but it turns out that like all things TeX-related it's creaky and barely works and needs to be replaced. The author presented MLBiBTeX, a replacement with special multilingual features originally written in C and rewritten in Scheme.
The Marriage of MrMathematica and MzScheme
Chongkai Zhu presented his interface between PLT Scheme and Mathematica. It's neat to see these languages connected together.
ACT Parameterization Framework
An simulator for internal combustion engines written in Scheme.
Javascript to Scheme compilation
The author presented a neat Javascript compiler that compiles to Bigloo scheme. The semantics of Scheme and Javascript are similar, so mapping Javascript onto Scheme class systems seems to work well, and once the code is in Scheme they're able to take advantage of the excellent Bigloo compiler to get fast code. Performance is better overall than any existing Javascript system, though that's not fair since their compiler isn't quite ECMAScript compliant. During Q & A, they explained that two features it doesn't support that will likely hurt its performance are string-based field/method access and modification of globals via the global object. Overall this seemed like a very cool piece of work.
Okay, there's more to write up but I figured I should at least get the Scheme Workshop report up. More to follow.
2 Comments:
This comment has been removed by a blog administrator.
By Anonymous, at 20:58
Damn! At least two ideas I've had in the past (predicate classes and Eli's lazy sub-language in Scheme) were presented at these conferences. I've gotta start seeing my ideas through.
By Dave Herman, at 21:26
Post a Comment
<< Home