Skip to main content
1 min read
FIO

FIO

FIO is a type-safe, purely functional effect system for F#. Write highly concurrent applications using a composable DSL inspired by ZIO and Cats Effect.

Key features:

  • IO monad for pure side effect management
  • Fibers (green threads) with constant-time scheduling
  • Multiple runtimes: Direct, Cooperative, and Concurrent
  • Performance-validated with comprehensive benchmarks

Initially developed at DTU and available on NuGet.

Example:

module MyFIOProject

open FSharp.FIO.DSL
open FSharp.FIO.App
open FSharp.FIO.Lib.IO

type WelcomeApp() =
    inherit FIOApp<unit, exn> ()

    override _.effect = fio {
        do! FConsole.PrintLine "Hello! What is your name?"
        let! name = FConsole.ReadLine
        do! FConsole.PrintLine $"Hello, %s{name}! Welcome to FIO! 🪻💜"
    }

WelcomeApp().Run()

Explore the full API, benchmarks, and documentation in the repository.