AV
Size: a a a
AV
K
Eff [m::* -> *]
, и интерпретатор Eff, который раздаёт эффект соотвествующим handler-ам. Тут какие есть варианты в пространстве дизайна?newtype Eff fs a = Eff { runEff :: forall m. Monad m => Dispatch fs m -> m a }
Dispatch fs m
это набор f m ~> m
, для всех Element f fs
AV
MK
K
data Dispatch fs m whereНе, это список изоморфизмов натуральных трансформаций. Ещё у меня был вариант, где это был
(:/\) :: f m ~> m -> Dispatch fs m -> Dispatch (f : fs) m
Empty :: Dispatch '[] m
Array Int (Any fs m)
, для O(1) поиска, но там весь Core.hs
состоял из unsafeCoerce
.MK
MK
K
MK
K
MK
K
MK
MK
AV
АГ
AT