Past Meetup

Two Talks @ Foursquare: Algebra With Types In Scala & Testing With Final Tagless

This Meetup is past

145 people went

Location image of event venue


Hey folks, we've got another rendition of ny-scala, this time hosted by Foursquare! Ian Tabolt from Foursquare and Lance Gatlin (who will be joining us again after his previous meetup talk in October) will be presenting in back-to-back 25 minute sessions. Doors will open at 6:30pm and talks will start around 7:00pm.

Food will be provided, and drinks TBD.


Ian Tabolt: "Algebra With Types In Scala"

Description: Algebraic data types (case classes and sealed traits), combined with pattern matching, are arguably Scala's killer feature. More than a syntactic convenience, ADTs give us a way to precisely model the inputs and outputs of our programs and avoid unnecessary complexity of handling impossible states. This talk will show that the complexity of a type is a real quantifiable cost, and will put the "algebra" in algebraic data types by exploring new ways to reason about types using this complexity.

About Ian:

Ian is a software engineer on the developer systems team at Foursquare. He works on improving the core Scala ecosystem in their massive "monorepo" code base, which is comprised of millions of lines of Scala over thousands of packages. Aside from Scala, he enjoys cycling, has two dogs, and holds Yankees season tickets.


Lance Gatlin: "Testing With Final Tagless"

Description: In this talk, we'll explore using the testing library Discipline (with ScalaCheck) to automatically test "laws" (i.e. rules) against an example final tagless algebra. Using a more generic rule testing approach, we will write less testing code and achieve higher code coverage. This talk builds on the October talk "Finally! Tagless and Fancy Free Monads". It is based on the ideas laid out by Marcin Rzeźnicki in his blog post "Tagless with Discipline — Testing Scala Code The Right Way" (

At the end of this talk, you'll know:
* How to write Discipline laws to test a final tagless algebra
* How this approach reduces the amount of explicit testing code needed
* How to test laws against different monadic contexts (e.g. Id, Future, DBIO, etc)

Also recommended is a quick review of these before the talk:
* Monads
* Tagless final basics
* ScalaCheck

About Lance:

Lance joins us again at ny-scala after his previous talk in October. You can find his bio from the previous meetup event: