We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Functional Programming on .NET - The Best of Both Worlds - Isaac Abraham - NDC Oslo 2024
Learn how functional programming in .NET combines the best of both worlds, exploring F#'s advantages over C# for FP while maintaining access to the full .NET ecosystem.
-
Functional programming fundamentally comes down to two core concepts: expressions (everything returns a value) and immutability (data cannot be changed after creation)
-
C# is primarily an object-oriented language that has added functional features over time, but will always have mutable state at its heart and isn’t optimized for functional programming
-
Key functional programming patterns include:
- Pure functions instead of stateful objects
- Immutable data structures
- Expression-based programming over statements
- Separation of data and behavior
- Function composition
-
While C# has functional features like lambdas, records, and pattern matching, these are primarily syntactic sugar and don’t make the language truly functional
-
F# provides a more natural functional programming experience on .NET because it was designed as a functional-first language, while still allowing object-oriented programming when needed
-
Benefits of functional programming include:
- Easier testing due to pure functions
- Fewer bugs from immutability
- Simpler composition of functions
- Better concurrency with no shared mutable state
- More maintainable code through separation of concerns
-
When doing functional programming in C#, focus on:
- Using static methods over instance methods
- Immutable types and data structures
- Expression-based code where possible
- Keeping mutable state at the edges of the application
-
Rather than trying to force functional programming in C#, consider F# for a better functional programming experience while still leveraging the .NET ecosystem
-
The functional approach works particularly well for cloud computing, data processing pipelines, and concurrent programming scenarios
-
You don’t need to learn advanced concepts like monads or category theory to benefit from functional programming - focus on the fundamentals of expressions and immutability