Skip to content
New this month 24 fresh C++, C#, F#, JavaScript, TypeScript and Lua courses just landed. Browse new releases Use code WELCOME10 for 10% off your first order · 14-day refund

F# for C# Developers: Think in Functions

Translate everything you know from C# into idiomatic F#, one working example at a time.

Rated 5.0 out of 5 from 1 review 15 students

JB Created by Jonas Berg

  • Last updated August 2026
  • English
  • 9h 6m of material
  • 68 lessons

What you will learn

8 concrete outcomes

Every bullet below is something you will have built, shipped or be able to explain by the time you finish the last lesson.

  • Model domains with records, discriminated unions and exhaustive pattern matching
  • Replace null and exception control flow with Option and Result pipelines
  • Compose behaviour with partial application, the pipeline operator and higher-order functions
  • Write and read computation expressions, including async and task builders
  • Use type providers to consume JSON and SQL schemas with compile-time checking
  • Interoperate with C# libraries and expose F# code that C# consumers find natural
  • Test with Expecto and generate property-based cases with FsCheck
  • Use F# Interactive for exploration and rapid feedback instead of throwaway console projects

Course curriculum

7 modules · 68 lessons · 9h 6m of material

12 lessons running 1h 36m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

11 lessons running 1h 28m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

10 lessons running 1h 20m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

11 lessons running 1h 26m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

10 lessons running 1h 22m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

8 lessons running 1h 04m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

6 lessons running 50m in total. Each lesson ships with the finished source files and a short written recap, so you can follow along in your own editor and skim the module again later.

Lesson-by-lesson titles, code downloads and exercises live inside the course library you get access to straight after checkout.

7 modules · 68 lessons

9h 6m total length

Requirements

Short list, and deliberately so. If you meet these you can start today.

  • Solid C# experience, including generics, LINQ and async
  • The .NET 9 SDK with the F# tooling, plus VS Code with Ionide or Visual Studio
  • No functional programming background required

About this course

You already know .NET. You know the base class library, NuGet, async, and how a project file works. What you do not have yet is the reflex to model a problem with types and functions instead of classes and mutation. That reflex is the entire subject of this course, and having C# in your background makes it far quicker to build than starting from nothing.

Every concept is introduced as a translation. Records and discriminated unions replace class hierarchies and enum plus switch. Pattern matching with exhaustiveness checking replaces defensive null tests. Option replaces null, Result replaces exception-driven control flow, and the pipeline operator replaces long chains of intermediate variables. Modules and functions replace static utility classes, and units of measure replace comments that hoped nobody would pass milliseconds where seconds were expected.

The second half covers what makes F# productive in real .NET work: computation expressions including async and task, type providers over JSON and SQL, interoperating cleanly with C# libraries, testing with Expecto and FsCheck property tests, and using the F# Interactive window as a genuine development tool. The closing project is a small ETL service that reads messy input, validates it into a well-typed domain and writes a report.

Topics covered

Frequently asked questions

Still unsure about something? Write to misteryjj100@gmail.com and a human answers, usually the same working day.

Yes, and the interoperability module shows exactly how. F# projects reference C# projects and the reverse works too, which makes adopting F# for one library a realistic first step.

It ships with the .NET SDK, targets the same runtime and gets updates alongside C#. Teams typically use it where correctness matters most, such as pricing, parsing and domain modelling.

None beyond ordinary programming. Category theory vocabulary is deliberately avoided in favour of concrete examples and working code.

Checkout is handled on our provider's secure payment page. The moment your payment clears we email your personal access link and access code to the address you used at checkout, and the same link appears in your account library. There is nothing to install and nothing to wait for.

Email misteryjj100@gmail.com within 14 days of your purchase, quote your order number, and we refund the full amount to your original payment method. No form to fill in and no questions about how much of the course you watched.

What students say

Reviews are written by people who bought this course. We publish the critical ones too.

5.0

Rated 5.0 out of 5

Course rating · 1 review

Rating distribution

  • 5 stars 100%
  • 4 stars 0%
  • 3 stars 0%
  • 2 stars 0%
  • 1 star 0%
  • HF

    Helena Ferrari

    Software architect

    Dec 2025
    Rated 5.0 out of 5

    Translated, not restarted

    Each idea arrives as here is what you would write in C#, here is the F# version, here is why the second one is shorter. With a decade of C# behind me that is the only approach that would have worked. Making illegal states unrepresentable is now a phrase I use in design reviews and people know what I mean.

Your instructor

JB

Jonas Berg

Functional programmer and F# instructor

  • 64 students taught
  • 3 courses published
  • 4.0 instructor rating
  • F#
  • Functional programming
  • Type-driven design
  • Domain modelling

Jonas has written F# in production for over a decade, mostly in insurance and logistics where correctness is far cheaper than speed. He teaches functional programming as a practical tool: types that make bad states unrepresentable, and pipelines you can test without touching a database. His courses convert real imperative code into functional code one step at a time, so nothing feels like a leap of faith. He maintains a small but well-used F# validation library.

$64 USD

One-time payment · lifetime access

The WisdomCharms dispatch

One useful email a week. No fluff, no spam.

New course releases, discount codes before anyone else, and a short, practical breakdown of one technique — a prompt pattern, a C++ idiom, a TypeScript trick — that you can use the same day.

  • Subscriber-only launch pricing
  • Unsubscribe in one click
  • We never sell your address

By subscribing you agree to our Privacy Policy. Questions? Write to misteryjj100@gmail.com.