
FIO is a type-safe, purely functional effect system for F#, designed for building highly concurrent and asynchronous applications. It provides a lightweight DSL for writing composable programs using functional effects.
Inspired by ZIO and Cats Effect, FIO features:
- An IO monad for managing side effects
- Fibers (green threads) for scalable concurrency
- A focus on purity, type safety, and performance
FIO was developed as part of a master’s thesis in Computer Science at DTU.
Compose functional effects with FIO:
module FIOAppUsage
open FSharp.FIO.DSL
open FSharp.FIO.Lib.IO
open FSharp.FIO.App
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()
Check out the repository for more information.