Files
blitz-kt/src/main/kotlin/blitz/func/Monad.kt
SuperCraftAlex 6f80ab30a3 clean up
2024-03-09 18:34:25 +01:00

14 lines
273 B
Kotlin

package blitz.func
class Monad<O> internal constructor(
val impure: () -> O
)
fun <O> unit(v: O): Monad<O> =
Monad { v }
fun unit(): Monad<Unit> =
Monad { }
fun <I, O> Monad<I>.bind(op: (I) -> O): Monad<O> =
Monad { op(this@bind.impure()) }