Functional Geekery Episode 104 – Debasish Ghosh

In this episode I talk with Debasish Ghosh. We talk his introduction to Scala, domain modeling, lawful abstractions, extracting algebraic patterns from a code base, and more.

Our Guest, Debasish Ghosh
@debasishg on Twitter

Conference Announcements

Compose Melbourne will be taking place August 28th and 29th. For more information and to register, visit

The Strange Loop coming! It will be held in St. Louis, MO on September 28-30, 2017 at the Peabody Opera House. To submit your CfP, visit

PWLConf 2017 will be taking place September 28th in St. Louis, MO, before Strange Loop. Visit for more information and to stay updated on latest announcements.

Open FSharp will be taking place the 28th-29th of September in San Francisco, California. Visit for more information and to register.

elm-conf is returning to St. Louis on September 28, 2017 for a day of learning, speaking, and connecting with the Elm language community. For more information and to register visit

RacketCon is October 7th & 8th at the University of Washington, with keynote speakers Dan Friedman and Will Byrd. Visit for more information and to register.

LambdaWorld will be taking place in Cadiz, Spain on October 26th and 27th. For more information visit and to keep updated visit

CodeMesh is coming up November 8th and 9th in London. For more information, and to keep an eye open for registration, visit

Moonconf will be taking place the 9th-11th of November. For more information visit

LambdaDays 2018 will be taking place February 22nd and 23rd in Kraków, Poland. For more information, and to register, visit

If you have a conference related to functional programming, contact me, and I will be happy to announce it.


Some of you have asked how you can support Functional Geekery, in that vein,
Functional Geekery now has a Patreon Page.

If that is one of the ways you would like to show your support, you can
find out more at

Topics [@5:12]

About Debasish
Setting the stage for discovering Scala
Unification of object-oriented and functional paradigms
Structure and Interpretation of Computer Programs
Scala bringing a statically typed language with higher-order functions
IntelliJ IDEA
Generating getters and setters as the way you do enterprise development
Setting the stage for domain modeling
Domain Driven Design by Eric Evans
Bounded Context
“Domain model is possibly the most important artifact in the life-cycle of a project”
DSLs in Action
Why Functional Programming Matters by John Hughes
Functional Modules and how they relate to Bounded Contexts
First reaction Scala
Starting in Scala by writing tests
Design Patterns in Dynamic Programming presentation by Peter Norvig
Bridge and Strategy patterns as higher-order functions
First encounter with Scalaz
Algebraic Design
Monoid as a design pattern in functional programming
“Use the least powerful abstraction that applies to your use case”
How algebraic types work in Scala
Money as a Monoid
Importance of Lawful Abstractions
Domain models, Algebraic laws and Unit tests
Mining your codebase for Algebraic patterns
Refining abstractions to less powerful abstractions after initial identification
References to where to understand the different algebraic types
Functional Programming in Scala
Functional and Reactive Domain Modeling
Rúnar’s Episode of Functional Geekery
Haskell productivity pyramid
Functional and Reactive Domain Modeling
Functional Conf
India Erlang & Elixir Factory lite
Scala eXchange 2017

As always, a giant Thank You goes to David Belcher for the logo design.