Too often, one writes a DSL by starting with macros. However, this is often a case of premature optimization. An approach centered around "DSV" (domain specific values) and an interpreter leads to greater dynamicity. Macros can be added afterwards for optimization purposes or as syntactic sugar.
An introduction to the Clojure zip data structure, which supports fully functional tree navigation and editing. Includes a discussion of how to use the data structure effectively, as well as an overview of its performance characteristics.
Whereby I explore some of the programming language and paradigm influences on the Clojure programming language. Clojure contains its own novelty, but its greatest strengths are built on the foundation of existing language features. I will go through a handful of features in my 30 minutes and explain how they were influenced by existing features in other programming languages. Likewise, I will explain how Clojure diverges from its progenitors.
by Chris Houser
Clojure's existing persistent collection types cover many usage scenarios, but do leave a few gaps. Finger trees can fill gaps such as sorted sets with efficient support for 'nth', sequential collections that can grow at the front, the back, or even insert values anywhere in the middle, and more. In fact, finger trees can be customized to support a variety of application-specific needs while remaining persistent and playing nicely with Clojure's sequence and collection abstractions. We'll look at examples of using and customizing finger trees, and talk a bit about their internals.
by Rich Hickey
by Sean Devlin
Everyone seems to be interested in protocols, but not too many tutorials exist on the topic. I'm assuming that we'll have a fair amount of video game fans in the audience. The goal of this talk is to explain how protocols & datatypes work by analogy, using the Final Fantasy XIII character & job system.
A quick review of what programmers have to say about simplicity might lead you to the following (incorrect!) conclusions: every language/design approach/tool under the sun lays claim to simplicity, usually as a key virtue. Simplicity means many different things and is so subjective as to be worthless.
In fact, simplicity is objective. It has a definition, and an etymology, that are very useful to software developers. In this talk, we will: cut through the noise to the definition of simplicity demonstrate how simplicity informs the design of Clojure, and Clojure programs help you make your programs simpler, and explain to others what this means, and why.
22nd–23rd October 2010