运行
CI 运行的命令,以及它逐字节核对的输出。
dawn run examples/projects/qualified_effects
42
examples/projects/qualified_effects/src/main.dawn
# Qualification changes lookup, not the evidence supplied by a handler.
use library as dep
alias Callback = fn() -> Int !dep.Ask
fn consume(f: Callback) -> Int !dep.Ask = f() + dep.ask()
fn handled_answer() -> Int = {
let answer = () => {
with handle dep.Ask { ask() => 21 }
consume(() => dep.ask())
}
answer()
}
test "qualified callbacks and handlers share the provider effect" {
assert (handled_answer() == 42)
}
pub fn main() -> Unit !io = {
println("${handled_answer()}")
}
examples/projects/qualified_effects/src/library.dawn
# A public effect keeps its identity across every importing module alias.
pub effect Ask { fn ask() -> Int }