Kokaのwith文
callback地獄を回避する
使用例
まず高階関数を定義しておく
code:koka(js)
fun twice(f)
f()
f()
普通に呼び出すと以下のように書ける
code:koka(js)
fun test-twice()
twice
twice
println("hi")
ちなみに以下の糖衣構文
code:koka(js)
fun test-twice()
twice(fn() {
twice(fn() {
println("hi")
})
})
with文を使うと以下のように書ける
code:koka(js)
pub fun test-with1()
with twice
with twice
println("hi")
nestが消える
高階関数側に引数がある場合は、
以下2つは同じ
code:koka(js)
f(e1,...,eN, fn(x){ <body> })
code:koka(js)
with x <- f(e1,...,eN)
<body>
実例
code:koka(js)
pub fun test-with2() {
with x <- list(1,10).foreach
println(x)
}
docsに以下のように書かれてる
This is a bit reminiscent of Haskell do notation.
まあ、わからんでもないmrsekut.icon
上記のtwiceを適当に書き直してみると
code:koka(ts)
fun twice2(f)
f("a")
f("a")
これを
code:koka(ts)
pub fun test-with2()
twic2 fn(a)
twice2 fn(a)
println(a)
こうする!
code:koka(ts)
pub fun test-with2()
with a <- twice2
with b <- twice2
println(b)
with finally
with handler
糖衣構文まつりやなmrsekut.icon