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.

Read more »

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

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)

Read more »

Labels: ,

Thursday, April 28, 2016

Summer school on bidirectional transformations

Lady Margaret Hall, Oxford, UK
25th to 29th July 2016


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.

Read more »

Labels: ,

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.)
Read more »

Labels: , , , , , ,

Wednesday, January 13, 2016

Reflections on monadic lenses

Thanks to Matt Might for some very kind words on our paper "Reflections on monadic lenses", recently posted to 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.

Read more »

Labels: ,

Friday, July 24, 2015

Call for participation: DBPL 2015

The 15th International Symposium on Database Programming Languages
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.

Read more »

Labels: , ,