Concurrent Clean : do記法
エラーハンドリングでcase文を使うことの繁雑さを解消したい。
func u = with u do Pass a <- funcPassOrFail 123 catch e = return e b <- process a return (a,b) finally _ <- close
と書くと、
func u = `finally0 (`0 u) where `0 u # (`r0,u) = funcPassOrFail 123 = case `r0 of Fail e = (e,u) Pass a = `1 a u `1 a u # (b,u) = process a u = ((a,b),u) `finally0 (`r0,u) # (_,u) = close u = (`r0,u)
となる、みたいな。
tryがたくさん続くようなときとかはどうなるのかなぁ。
もう少し考える。
-
-
- -
-
withは予約語だった。
-
-
- -
-
関数をわけると、スコープが難しいなあ。