## Sunday, August 12, 2018

### Recursion in R

I've been (trying to) learn a little about R, mostly in self-defense because I'm involved in a project with others using it.

R has lots of fun features, such as built-in support for vector and matrix operations and overloading, which make it well-suited to its domain, statistical programming and modeling.

However, there are also some things that are just plain weird, at least from the point of view of programming language design.  Scoping and lazy evaluation interact in a subtle way,  particularly with regard to recursion.

ETA: JavaScript does exactly the same thing. Yech.
ETA2: And Python. Sigh.

Labels: ,

## Wednesday, December 13, 2017

### Defining backticks using "pipe" operations

(Thanks to Simon Fowler and others on the Links team for the discussion leading to this...)

In Haskell, you can use a 2-argument function as if it were an infix operator by putting "backticks" around it like this:

ghci> let plus x y = x + y
ghci> 1 plus 2
3

In a number of functional languages such as F# and OCaml, the following "pipe" operations have become popular (I'll continue using Haskell syntax, though):

ghci> let (|>) x f = f x
ghci> let (<|) f x = f x
ghci> [1,2,3] |> map (plus 1)
[2,3,4]

Labels: ,

## Thursday, April 28, 2016

### Summer school on bidirectional transformations

25th to 29th July 2016
http://www.cs.ox.ac.uk/projects/tlcbx/ssbx/

### TOPIC

Bidirectional transformations (BX) are means of maintaining consistency between multiple information sources: when one source is edited, the others may need updating to restore consistency. BX have applications in databases, user interface design, model-driven development, and many other domains. This summer school is one of the closing activities on the "Theory of Least Change for BX" project at Oxford and Edinburgh. It brings together leading researchers in BX, spanning theory and
practice, for a week of lectures in beautiful Oxford. It will be aimed at doctoral students in computer science, but will also be suitable for strong master's students and for researchers.

## Tuesday, March 01, 2016

### PhD studentships in programming languages, provenance, data management

I am currently advertising two PhD studentships, on topics spanning programming languages, provenance, and data management, to start in fall 2016.

Both of these studentships are fully funded for applicants of any nationality (in contrast to many UK PhD studentships which are only funded up to the UK/EU tuition level, and do not cover full tuition fees for students from outside the European Union.)

## Wednesday, January 13, 2016

Thanks to Matt Might for some very kind words on our paper "Reflections on monadic lenses", recently posted to arXiv.org and scheduled to appear in April as part of an upcoming Festschrift for Phil Wadler.

Labels: ,

## Thursday, November 05, 2015

### Private type members in Scala aren't

I haven't posted in a while now, and one major reason is that I've been teaching a new course on Programming Languages.  I've been using Scala, somewhat experimentally, and as a (perhaps misguided) way of forcing myself to learn some Scala.

In the last few lectures, I've been covering Scala's object system.  I'm not an expert on Scala by any means, but I was a little surprised by the way "private" appears to work (or more accurately, not work) on type members of classes/objects.

Labels: ,

## Friday, July 24, 2015

### Call for participation: DBPL 2015

The 15th International Symposium on Database Programming Languages
http://2015.splashcon.org/track/dbpl2015
Pittsburgh, Pennsylvania, USA
October 27, 2015
hosted as part of SPLASH 2015

## Call for Participation

DBPL has a long tradition of bringing databases and programming languages together. This year we continue this tradition by co-locating DBPL with SPLASH 2015, and presenting an interesting mix of papers with programming language and database aspects. In addition to these papers we have an excellent invited talk by Marko Rodriguez of DataStax about Gremlin: A Stream-Based Functional Language for OLTP and OLAP Graph Computing. We hope to see you in Pittsburgh!

DBPL is held in cooperation with ACM SIGPLAN, and gratefully acknowledges support from LogicBlox, Inc.