tweag/capability
module
HasHogeみたいな名前の型クラスが定義されている
ここに書いてるが、mtlを知らなさすぎて読んでもあまり理解できないmrsekut.icon 雑に言うとmtlはボイラープレートが多いらしい
あとは同じ型を入れ子にできない?とか
同じ型も入れ子にできる
code:hs
getAB :: (HasState "a" Int m, HasState "b" Int m) => m (Int, Int)
getAB = do
a <- get @"a" -- get state under tag "a"
b <- get @"b" -- get state under tag "b"
pure (a, b)
get @"hoge"というふうにtagで識別する