AP
Size: a a a
AP
AP
AllowAmbiguousTypes
нужен, потому что x нет в типе выражения. откуда его компилятор возьмёт?x
слева учиытвалсяJS
class Action x a where
send ::
(MonadIO m, HasField x r (TQueue a), MonadReader r m) => a -> m ()
send a = do
chan <- asks (getField @x)
liftIO $ atomically $ writeTQueue chan a
JS
x
слева учиытвалсяJS
x
слева учиытвалсяJS
x
слева учиытвалсяAP
data Action1 = Action1
data Action2 = Action2
...
AP
AP
AP
AP
data Env = Env
{ action1Chan :: TChan Action1
, action2Chan :: TChan Action2
}
AP
send Action1
send Action2
AP
JS
data Env = Env
{ action1Chan :: TChan Action1
, action2Chan :: TChan Action2
}
AP
JS
AP
instance Action Action1 "action1Chan"
AP
send
JS
instance Action Action1 "action1Chan"
instance Action Action1 "action1Chan"
instance Action Action1 "action2Chan"
AP