Вот код, который используется для работы (обрезаются соответствующим образом я надеюсь)Reactive Banana 1.0.0 - Почему этот старый код разбивается?
makeNetworkDescription :: forall t . Frameworks t => Parameters -> Moment t()
makeNetworkDescription params = do
eInput <- fromAddHandler (input params)
eTick <- fromAddHandler (tick params)
..
let
bResourceMap :: Behavior t ResourceMap
bResourceMap = accumB initRmap $
adjustMarket <$>
bMarketRolls <@
eTick
Но теперь типы изменились.
мы имеем:
makeNetworkDescription :: Parameters -> MomentIO()
и accumB :: MonadMoment m => a -> Event (a -> a) -> m (Behavior a)
сказать, что я изменить определение bResourceMap
к
bResourceMap :: Behavior ResourceMap
bResourceMap = accumB initRmap $
adjustMarket <$>
bMarketRolls <@
eTick
немного не от accumB
определения, но давайте посмотрим, что произойдет.
ghc
выдает ошибку
Couldn't match type ‘Behavior ResourceMap’ with ‘ResourceMap’
Expected type: Behavior ResourceMap
Actual type: Behavior (Behavior ResourceMap)
право, из-за типа accumB
поведение должно быть в контексте MonadMoment
. Посмотрев на MonadMoment
я нахожу два экземпляра
instance MonadMoment Moment where liftMoment = id
instance MonadMoment MomentIO where liftMoment = MIO . unM
Так почему же фактический тип решимости Behavior (Behavior ResourceMap)
, внешний вид должен быть MonadMoment
, который не совпадает.
Я хотел бы посоветовать, как решить эту проблему, это происходит со всеми моими определениями Behavior
.
просто любопытно: это настоящий или хобби проект? –
Это настоящая игра, но не игра qua. Это игра, цель которой - не просто игра. –