``` fun <F> MonadDefer<F>.putStrLn(lin...
# arrow
s
Copy code
fun <F> MonadDefer<F>.putStrLn(line: String): Kind<F, Unit> = invoke {
    println(line)
}

fun <F> MonadDefer<F>.getStrLn(): Kind<F, String> = invoke {
    readLine() ?: throw IOException("Failed to read input!")
}
had to use invoke... defer expects a different return type 🙂