SlideShare a Scribd company logo
Things We Never Told Anyone About
Functional Programming
Michael Sperber
@sperbsen@discuss.systems
• software development with FP
• software reviews
• training
www.active-group.de
funktionale-programmierung.de
bobkonf.de
Mar 14, 2025, Berlin
FP
What is it good for?
Functional Programming
CC BY 4.0, https://free-vectors.net/business/marked-checklist-vector
Build Software
Systems to
Fulfill
Requirements
ICFP Papers and Events
ICFP 2024 Distinguished Paper
“use-cases ... type-checkers and automated theorem provers”
S. L. Peyton Jones and J.-M. Eber
How to write a financial contract. 2001
Build a
combinator
library!
https://www.flickr.com/photos/tambako/4237063719
CC BY-ND 2.0
¬FP
Software Systems (for People)
• fulfill (human) requirements
• make lives better
• programmed by people
What It Takes
• connecting requirements and software
• programming in the small
• programming in the large and in the long
• human activities around this
Software System Qualities
https://quality.arc42.org/articles/arc42-quality-model
(Functional)
Requirements
and
Programming
in the Small
• data
• functions
Programming in the
large ... and in the long?
Human Activities
Elsewhere ...
{OOP}
What It Takes
• connecting requirements and software
• programming in the small
• programming in the large and in the long
• human activities around this
$ = Δ
Programming
in the Large and
in the Long
1979
Evolutionary Software Quality
Source: Markus Harrer
Functional Suitability
Reliability
Usability
Performance Efficiency
Security
Maintainability
Compatibility
Portability
Time
Functionality and Architecture
Bass, Kazman, Clements: Software Architecture in Practice
$ = Δ
Programming
in the Large and
in the Long
David Parnas (1972)
"We propose [...] that
one begins with a list
of difficult design
decisions or design
decisions which are
likely to change. Each
module is then
designed to hide such
a decision from the
others.."
https://www.wps.de/en/news/the-modulith-salvation-for-the-monolith
The Monolith is Unmodular
Microservice Architectures
Decoupled by Default
• immutability
• abstraction boundaries
• expressive interface
languages
• expressive effects
https://www.isaqb.org/certifications/advanced-level/?lang=en
Putting it all
together
A Blueprint for Functional Software Design
• bottom-up
• start with functional qualities
• everything is data
• data modeling with sums and products
• abstraction
• combinator models
• algebraic structures
• mathematical properties
Bottom-Up
Data Modeling
• functions
• data
• products
• sums FTW
https://funktionale-programmierung.de/2024/11/25/sums-products-english.html
What We Model When We Model - OO
Quelle: Wikipedia
CC Attribution 3.0 Unported
What We Model When We Model - FP
Quelle: Wikipedia
CC Attribution 3.0 Unported
A World of Objects
(© Trustees of the British Museum)
Reality and Snapshots
Architecture Evolution
• model domain with data
• implement functions
• change to achieve
quality-specific requirements
low coupling = pΔ
functionality
Abstraction
λ□.
Combinator Libraries
Combinator Libraries
• compositionality
• abstraction
• purity
• modifiability
• maintainability
• privacy (actual rules are secret)
• separation of concerns
• junk-freeness / -quantification
• efficiency
Algebraic Structures
Abstract Nonsense
Mathematics =
Brain Patterns
for Thinking
Why This?
... profit?
The Dangers of
Aliasing
FP/Mathematics and Humans
• Model Human Understanding
(rather than the thing)
• Immutability FTW
• Maths = Patterns for Human Understanding
Properties
"Executable Specification"
FP FTW!
FP Todos
• top-down FP design
(and meet-in-the-middle)
• architecture documentation
patterns & visualization
• stakeholder communication
• books
• cross-pollination with the non-FP types
How to Split a System into Building Blocks
How to Split a System into Parts
Bounded Contexts
https://martinfowler.com/bliki/BoundedContext.html
Bounded Contexts
https://martinfowler.com/bliki/BoundedContext.html
different models!
Cross-Functional Teams
Frontend
Business Logic
Database
Frontend
Business Logic
Database
Frontend
Business Logic
Database
separate databases!
Issues with Self-Contained System
• it’s a distributed system now
• model consistency
• properties of event streams
Possible FP Contributions
• modular monoliths
• rehabilitate Parnas
• practical distributed systems
• bounded-context consistency
• flexible self-contained systems
A Call to Action
• How did you do it?
• What are your requirements?
• Did you write it up?
• Who did you talk to?
• Who did you listen to?
• What have you learned?
• What have you taught?
Above All ...
https://commons.wikimedia.org/wiki/File:Activity_Session_Pbi_Uni_Wikisource_Workshop_9th_April_2019.jpg (CC BY-SA 4.0)
Category:
Functional
Software
Architecture

More Related Content

PDF
Fp for the oo programmer
PDF
Functional programming in C++
PDF
OOP and FP
PDF
OOP Design & FP Design
PPTX
Good functional programming is good programming
PPTX
Do you even Function? Guiding Through Functional Interfaces
PDF
Introduction to functional programming
PDF
Beyond PITS, Functional Principles for Software Architecture
Fp for the oo programmer
Functional programming in C++
OOP and FP
OOP Design & FP Design
Good functional programming is good programming
Do you even Function? Guiding Through Functional Interfaces
Introduction to functional programming
Beyond PITS, Functional Principles for Software Architecture

Similar to Things We Never Told Anyone About Functional Programming (20)

PDF
Functional programming is the most extreme programming
PDF
Functional Programming Patterns (NDC London 2014)
PPTX
The joy of functional programming
PPTX
Functional programming for the Advanced Beginner
PPTX
Overview of Function Points Analysis
PPTX
Function Points
PPTX
Functional programming (Let's fall back in love with Programming)
PPTX
Functional pogramming hl overview
PDF
Introduction to functional programming (In Arabic)
PDF
Functional Programming Patterns (BuildStuff '14)
PDF
Functional programming techniques in regular JavaScript
PPTX
Yin Yangs of Software Development
PPTX
Introduction to functional programming with JavaScript
PDF
Teaching Constraint Programming, Patrick Prosser
PPT
Generalized Functors - Realizing Command Design Pattern in C++
PPT
Unified Modeling Language (UML)
PDF
Dimitry Solovyov - The imminent threat of functional programming
PPTX
Why functional programming in C# & F#
PDF
Demystify Functional Programming in Swift
PDF
Functional Design Patterns (DevTernity 2018)
Functional programming is the most extreme programming
Functional Programming Patterns (NDC London 2014)
The joy of functional programming
Functional programming for the Advanced Beginner
Overview of Function Points Analysis
Function Points
Functional programming (Let's fall back in love with Programming)
Functional pogramming hl overview
Introduction to functional programming (In Arabic)
Functional Programming Patterns (BuildStuff '14)
Functional programming techniques in regular JavaScript
Yin Yangs of Software Development
Introduction to functional programming with JavaScript
Teaching Constraint Programming, Patrick Prosser
Generalized Functors - Realizing Command Design Pattern in C++
Unified Modeling Language (UML)
Dimitry Solovyov - The imminent threat of functional programming
Why functional programming in C# & F#
Demystify Functional Programming in Swift
Functional Design Patterns (DevTernity 2018)
Ad

Recently uploaded (20)

PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPT
Introduction Database Management System for Course Database
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Nekopoi APK 2025 free lastest update
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
System and Network Administration Chapter 2
PDF
System and Network Administraation Chapter 3
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Digital Strategies for Manufacturing Companies
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
ai tools demonstartion for schools and inter college
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Digital Systems & Binary Numbers (comprehensive )
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Introduction Database Management System for Course Database
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Nekopoi APK 2025 free lastest update
wealthsignaloriginal-com-DS-text-... (1).pdf
System and Network Administration Chapter 2
System and Network Administraation Chapter 3
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Digital Strategies for Manufacturing Companies
CHAPTER 2 - PM Management and IT Context
Understanding Forklifts - TECH EHS Solution
Softaken Excel to vCard Converter Software.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PTS Company Brochure 2025 (1).pdf.......
ai tools demonstartion for schools and inter college
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Digital Systems & Binary Numbers (comprehensive )
Ad

Things We Never Told Anyone About Functional Programming

Editor's Notes

  • #5: I’m expecting people to jump up and say no “play mind games and publish papers”. We’ll get to that. The same goes for functional languages, BTW.
  • #7: You might say “experience reports”, but those mostly show what somebody did, not how. But wait ...
  • #29: functions was what differentiated from OOP, no longer
  • #37: meet functional requirements facilitate communication decouple representation from semantics slow down change fulfill future requirements without or with small changes
  • #39: --- and mathematics in general