The Scala Consultancy

Know Your Scala


Books, videos, training, and mentoring... everything you need to excel.

Browse our catalogue

Succeed With Scala


Professional services tailored to your business, whatever stage you're at.

Work with us

Latest from the Blog

Value Discarding

Scala includes a feature called “value discarding”. This interacts in possibly surprising ways when combining functions that side effect. In this post we’ll look at an example, and describe ways to work safely with value discarding.

Continue reading…

Scala and 22

Back in 2014, when Scala 2.11 was released, an important limitation was removed: “Case classes with > 22 parameters are now allowed”. This may lead you to think there are no 22 limits in Scala, but that’s not the case. The limit lives on in functions and tuples. This post explores the limit, looks at an example from Slick, and notes two ideas for what you can do about it.

Continue reading…

Giving a First Talk

Underscore is supporting new speakers at Scala eXchange. Last year, Danielle Ashley gave her first Scala eXchange talk, and in this guest post, she writes about her experiences.

Continue reading…

How You Can Help Bring New Speakers and New Ideas to Scala eXchange 2016

The Scala eXchange 2016 conference is taking place in December, in London. The call for papers is open. We know you’re going to hear from some great established speakers, but we also want to make sure new voices are heard. New speakers increase the diversity of experiences, ideas, approaches, and interests. We can all benefit from that.

In this post, we’ll tell you how we’re helping new speakers. We need your help too.

Continue reading…

Opaque and Transparent Interpreters

The interpreter is the über pattern of functional programming. Most large programs written in a functional style can be viewed as using this pattern. Amongst many reasons, interpreters allow us to handle effects and still keep desirable properties such as substitution.

Given the importance of interpreters it is not surprising there are many implementation strategies. In this blog post I want to discuss one of the main axes along which implementation strategies vary, which is how far we take reification of actions within the interpreter.

Continue reading…

Our Customers

Some of our happy customers: