Onur Gumus

F#, path to functional enlightenment

What if you could add features by only appending new code? Discover how F# helps you build robust applications without breaking what already works.

F#, path to functional enlightenment
#1about 2 minutes

Shifting from object-oriented to functional programming

Functional programming requires unlearning imperative habits to gain benefits like statelessness, which reduces side effects and cognitive load.

#2about 4 minutes

Understanding functions as mathematical concepts

Functional programming treats functions like mathematical operations that always produce the same output for a given input without side effects.

#3about 3 minutes

Exploring unique F# syntax and project structure

F# uses `let` for redefinition instead of assignment and enforces a top-to-bottom file order for dependencies, simplifying code analysis.

#4about 4 minutes

Setting up a live coding environment with Fable

The Fable REPL provides an in-browser environment to write F# that compiles to JavaScript, enabling quick prototyping without local installation.

#5about 3 minutes

Refactoring imperative code into a functional pipeline

The pipeline operator (`|>`) transforms sequential, imperative steps into a declarative data flow by passing the output of one function to the input of the next.

#6about 2 minutes

Using discriminated unions for enhanced type safety

Replacing primitive types like strings with discriminated unions creates a more robust and type-safe domain model that prevents invalid states at compile time.

#7about 3 minutes

Evolving code by appending instead of modifying

New features can be added by creating new functions and types that wrap existing logic, minimizing the risk of breaking tested, stable code.

#8about 3 minutes

Managing errors gracefully with the result type

The built-in `Result` type (`Ok` or `Error`) provides an explicit way to handle operations that can fail, avoiding exceptions for control flow.

#9about 1 minute

Creating reusable logic with function composition

The composition operator (`>>`) combines multiple smaller functions into a single, larger function, creating reusable middleware for complex pipelines.

#10about 3 minutes

Showcasing real-world applications built with F#

F# is used to build complex, real-world applications like a 3D bin packer and a full-stack pizza ordering app with a Blazor-like UI and WebSockets.

#11about 3 minutes

Answering common questions about F# development

The discussion covers the benefits of append-only coding, debugging with source maps, and recommended IDEs like VS Code with the Ionide extension.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

Related Articles

View all articles
BR
Benjamin Ruschin
What Developers Really Need to Create Great Code Demos
Every developer on earth has, at some point, had another developer to thank for a breakthrough, a success, an aha moment they wouldn’t have had without coming across that blog post, that open-source contribution, that reply on socials or that humble ...
What Developers Really Need to Create Great Code Demos
CH
Chris Heilmann
All the videos of Halfstack London 2024!
Last month was Halfstack London, a conference about the web, JavaScript and half a dozen other things. We were there to deliver a talk, but also to record all the sessions and we're happy to share them with you. It took a bit as we had to wait for th...
All the videos of Halfstack London 2024!
DC
Daniel Cranney
Dev Digest 188: CfP time, the risks of NPM and IKEA algorithms
Inside last week’s Dev Digest 188 . 🤖 GitHub Copilot CLI is now in public review 💻 Microsoft is bringing ‘vibe working’ to office apps 🎣 Attackers abuse AI tools to generate captchas in fishing attacks ⚠️ When LLMs autonomously attack 🧠 Common cause...
Dev Digest 188: CfP time, the risks of NPM and IKEA algorithms

From learning to earning

Jobs that call for the skills explored in this talk.

Rust and GoLang

Rust and GoLang

NHe4a GmbH
Karlsruhe, Germany

Remote
55-65K
Intermediate
Senior
Go
Rust