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 fsAV
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