by Neal Ford
Learning the syntax of a new language is easy, but learning to think under a different paradigm is hard. This session helps you transition from a Java writing imperative programmer to a functional programmer, using Java, Clojure and Scala for examples. This session takes common topics from imperative languages and looks at alternative ways of solving those problems in functional languages. As a Java developer, you know how to achieve code-reuse via mechanisms like inheritance and polymorphism. Code reuse is possible in functional languages as well, using high-order functions, composition, and multi-methods. I take a variety of common practices in OOP languages and show the corresponding mechanisms in functional languages. Expect your mind to be bent, but you’ll leave with a much better understanding of both the syntax and semantics of functional languages.
This talk will cover the theory and implementation of 6 unique functional data structures in Scala. We’ll start out with the concept of functional persistence and then dive right into actual data structures. Each data structure will be motivated and built up by the associated theory and ideas. All of these will be illustrated (with requisite colorful diagrams) and implemented with the necessary trappings to be a first-class Scala Collection. Finally, we’ll look at some of the real-world constraints imposed by hardware architecture and the JVM itself, touching on how these constraints affect data structure design in ways that the theory doesn’t show.
by Runar Oli
It has been said that Scala is an object-functional hybrid language, and Scalaz takes the “functional” side of Scala as far as it will go. A library of pure data structures, type classes, highly generalized functions, and concurrency abstractions, Scalaz provides the functional programmer with familiar tools, and inspires the imperative programmer to eschew all side-effects. It is simultaneously a testament to the power of Scala and an exposition of its limitations.
United States United States, St. Louis
18th–20th September 2011