13. Unquote
F#の式木を直接実行していくスタイル
let expr = <@ fun x -> x * 2 @>
let f = Unquote.eval expr
printfn “%d” (f 21)
本来の用途はPowerAssert的なもので、実行器はオマ
ケ?
F#の式木
式木を走査
しながら実行
32. tryが式であることの罠
C#ではtryは文だが、F#では式
let f x = x + 10
f (try g () with e -> 0)
これを単純にemitしてしまうと、leave命令によって
評価スタックが空にされてしまう!
◦ fへの参照が評価スタックに残っているのに・・・
tryを無名関数でラップすることで回避
let f x = x + 10
f ((fun () -> try g () with e -> 0)())