Functional Programming patterns for designing modular abstractions by Debasish Ghosh #FnConf 2022
Channel: ConfEngine
Date: 2022-03-26

The biggest power of functional programming comes from the ability to treat functions as first class objects and the power to compose them incrementally to evolve larger functions out of smaller ones. Designing such functions as referentially transparent enables us to treat functions in programming just like functions in mathematics - side-effects are carefully abstracted through 'effects' and delayed till the algebra of our program gets submitted to the run time system.
 
In this talk I will discuss a few idioms and patterns on how using the power of composition can lead to development of modular abstractions. Instead of committing to an implementation prematurely we can define abstractions that focus on 'what' it does deferring the 'how' part to later stages of the lifecycle. In functional programming terminology we call the 'what' part the algebra of our abstraction, and the 'how' part the interpreter. Decoupling the two is one of the basic recommendations in functional programming. 
 
I will use Haskell and Scala for the examples. I will discuss common functionalities that we use everyday in programming our domain models like validations, database interactions, managing exceptions, talking to external services etc. and show how to use the power of typed functional programming to make them more compositional.

More details: https://confengine.com/conferences/functional-conf-2022/proposal/16314

Conference Link: https://www.functionalconf.com