functional


Transforming Enterprise Development With Clojure

Location: Salon B
April 12th, 2016
11:30 AM - 12:30 PM

Modern software architecture emphasizes modularity and composability. While the industry at large is rapidly moving toward approaches such as microservices, the monolith is still alive and well in the enterprise. Monolithic projects will often have tight coupling between components, resulting in codebases that are large and unwieldy. This directly impacts productivity, and translates into costs for the organization. In this session we will explore the aspects of Clojure that encourage writing code that is loosely coupled and reusable. We will discuss the benefits of the Clojure approach, and we will see how it applies in practice with a live demo.
Read more  »

Dmitri Sotnikov

Author, Web Development with Clojure: Build Bulletproof Web Apps with Less Code

Unleash Your Data with Clojure: Using Transducers and Sequences

Location: Salon B
April 12th, 2016
10:15 AM - 11:15 AM

As programmers, we spend the bulk of our time writing code that transforms data from one structure to another. The status quo in languages like Java uses imperative loops that accumulate changes in mutable objects. Functional programming and immutable values offer a different approach with opportunities for composability, concurrency, and simplicity. In this talk we'll examine Clojure's approach to data and data transformation, which is built from a foundation of immutable values and persistent collections. Clojure offers several models for transformation of collections - sequences, reducers, and transducers. We'll compare these to each other and to the status quo to
Read more  »

Alex Miller

Co-Author, Clojure Applied

Adventures in Elm: Events, Reproducibility, and Kindness

Location: Salon C
April 12th, 2016
1:30 PM - 2:30 PM

What do you get when you combine strict functional programming with heavy user interaction? Challenges, and unexpected freedoms. Elm is a purely functional language for the browser. It compiles to JavaScript -- after enforcing immutability, types, semantic versioning, and tight boundaries for user and server interactions. Working within these restrictions, I find my programming principles turned upside down. Small components? Who needs them. Global state? No problem. New principles emerge instead: events, reproducibility, kindness in times of error. This session gives an overview of Elm, then focuses on the Elm Architecture: how it overturns what is essential in object-oriented and
Read more  »

Jessica Kerr

Engineer, Stripe

Scala 2.12 & Java 8: More Fun Together!

Location: Salon B
April 11th, 2016
2:45 PM - 3:45 PM

To take full advantage of Java 8's support for lambdas and interfaces with concrete methods, a lot is changing behind the scenes of the Scala 2.12 compiler! At the language level, Scala has always had first-class support for lambdas, of course, and with Java 8's invokedynamic machinery we can now compile them to more compact and efficient bytecode. We also interoperate fully with Java's modeling of functions as Single Abstract Method types (aka functional interfaces). The other advantage of compiling to Java 8 bytecode is a more direct encoding of traits. The invokedynamic instruction plays an interesting role here as
Read more  »

Adriaan Moors

Scala Compiler Team Lead