effect Config {
    fn get(key: String): String
}

fn configure(): String with {Config, Console} = {
    Console.print("Need config: api_url")
    let url = Config.get("api_url")
    Console.print("Got: " + url)
    Console.print("Need config: timeout")
    let timeout = Config.get("timeout")
    Console.print("Got: " + timeout)
    "Configured with url=" + url + ", timeout=" + timeout
}

handler envConfig: Config {
    fn get(key) = if key == "api_url" then resume("https://api.example.com") else if key == "timeout" then resume("30") else resume("unknown")
}

fn main(): Unit with {Console} = {
    let result = run configure() with {
    Config = envConfig,
}
    Console.print(result)
}

let output = run main() with {}
