
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.