这里的代码,用来工作(截断适当希望)反应香蕉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
定义中。
只是好奇:这是一个真正的或爱好项目? –
这是真实的,但不是一款游戏。这是一个游戏,除了只是一个游戏之外,还有其他目的。 –