Healing F# withdrawal with C#

Mendel Agterberg - InfiCon Pro 2019

F# features in C#

F# Feature C# Implementation
Functional First OO First
Higher-order functions C#, Funcs and Actions
Value types ValueOf
Discriminated Unions OneOf
Pattern Matching OneOf/Language-ext
Currying/Partial Application Language-ext
Immutability Language-ext, collections, records
Expressions Language-ext
REPL -

F# features in C#

F# Feature C# Implementation
Functional First OO First
Higher-order functions C#, Funcs and Actions
Value types ValueOf
Discriminated Unions OneOf
Pattern Matching OneOf/Language-ext
Currying/Partial Application Language-ext
Immutability Language-ext, collections, records
Expressions Language-ext
REPL -

Solution for primitive types

  • Wrapping primitive types
  • More explicit
  • Less error prone

Discriminated Unions

  • Domain modeling
  • Makes branching more explicit

More on Discriminated Unions

  • Domain modeling
  • Makes branching more explicit

Recap

  • Learn, apply

Questions?

Extra sources