archives

Festschrift for John C Reynolds's 70th Birthday

The Festschrift for John C Reynolds's 70th Birthday is available as Special Issue of Theoretical Computer Science, Vol 375(1-3), 1 May 2007. Many interesting papers! Get it while it's hot.

Synthetic Computability

Andrej Bauer has made available his tutorial slides on Synthetic Computability, which he gave at the Mathematical Foundations of Programming Semantics #23 conference last month.

He motivates the idea of a synthetic theory, with reference to Hyland's construction of Eff (the effective topos), and tackles the ideas lying behind synthetic domain theory, one of the most rarefied areas of PL semantics, as accessibly as I have seen it done.

Highly theoretical, highly recommended. Via Bauer's announcement at his Mathematics and Computation weblog.

Currying != Generalized Partial Application?!

I had mistakenly learned that curry was a form of generalized partial application from the paper : Function Currying in Scheme by Jeffrey A. Meunier
and the Wikipedia entry (I should have known better), however I was mildly reprimanded for making this novice mistake in a recent paper submission to ICFP. There was a short post to the Scheme mailing list some time back summing up the problem.

In my paper I defined curry in Cat as:

  define curry : ('b ('A 'b -> 'C) -> ('A -> 'C)) { swap quote swap compose }

Whereas this really should have been called "partial-apply", "papply" or something comparable.
So the correct definition should have been:

  define papply : ('b ('A 'b -> 'C) -> ('A -> 'C)) { swap quote swap compose }
  define curry : (('A 'b -> 'C) -> ('b -> ('A -> 'C)) { quote [papply] compose } 

Has anyone else made this mistake? It seems to me that I have seen more incorrect definitions than correct ones.

P.S. Anyone here interested in the health of Wikipedia (I've given up), I'd suggest fixing the code examples and "intuitively ..." note.