(david-mcneil.com :blog)


2010 October 24 7:48pm

My rough notes of the messages I heard during day 1 (October 22, 2010) of clojure-conj.

Fogus - Roots of Clojure

slides

A list (some of it vaguely chronological) of the language environment in which Clojure was created:

Luke VanderHart - Zippers

Good talk that made me appreciate the beauty of zippers.

Zipper overview:

Zipper implementation:

Zippers in use:

Christophe Grand - DSLs != macros

slides

Talk was packed with API design tips based on real-world experience.

Christophe is the creator of Enlive, Moustache, and Parsely.

Is it a DSL or an API? In a sense every API is a DSL. It is a continuum, but the key attributes of a DSL are:

For his products:

So:

e.g. - Enlive - he removed ½ of the macros and the result was a cleaner, faster system.

Two legitimate cases for macros. But even for these avoid them:

Christophe provided an example of a DSL for building regexes

Tom Faulhaber - Flow

Flow is the opposite of feeling frustrated and passive. Instead things feel easy and natural.

Lisp promotes flow:

Functional programming promotes flow:

These allow you to build new abstractions with familiar mechanisms. It is easy to pick up tools from the Clojure toolbox and start manipulating data.

The focus in on dataflow, not flow-charts.

Good examples of flow in Clojure embody flow in both their implementation and their use. This means:

Code examples that embody flow:

Sean Devlin - Protocols

Examples of using protocols to get homogeneous behavior on heterogeneous types.

When to use Protocols over multi-methods:

Chouser - Finger Trees

slides

Great talk.

Implementation of ideas expressed in an academic paper in Haskell code. Finger trees are another persistent collection type that in some cases are more suitable than the built in Clojure types. In particular they are customizable and allow the creation of different kinds of data structures.

For example, you can build a double-list with finger trees:

These are built by defining the “meter” to use for the finger-tree. A single meter function is allowed but it can effectively be the composition of several functions. The meter defines how to split the tree and how to access indexed items in the tree.

The finger tree implementation in Clojure is not finished yet. Still needs to handle metadata and equality.

technomancy - Leiningen

slides

Additional lein features:

Community building:

Laurent Petit - Counterclockwise

They now have 80% of paredit.

Rich Hickey - New Clojure Features

Focus of new features is performance, but the results also offer better semantics (!). They are breaking changes. A key to the performance improvements is to produce code that Hotspot will optimize.

Unified primitives and boxed numbers

Align map key equality with number equality

Bindings & threads

Pay for what you use & dynamic variables

Functions & primitives


rss
archive
past life
twitter
about