Ecco il codice che utilizzate per lavorare (troncato in modo appropriato spero)Reactive Banana 1.0.0 - Perché questo vecchio codice si rompe?
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
Ma ora i tipi sono cambiati.
abbiamo:
makeNetworkDescription :: Parameters -> MomentIO()
e accumB :: MonadMoment m => a -> Event (a -> a) -> m (Behavior a)
dire che cambiare la definizione di bResourceMap
per
bResourceMap :: Behavior ResourceMap
bResourceMap = accumB initRmap $
adjustMarket <$>
bMarketRolls <@
eTick
leggermente fuori dalla definizione accumB
, ma vediamo cosa succede.
ghc
dà un errore
Couldn't match type ‘Behavior ResourceMap’ with ‘ResourceMap’
Expected type: Behavior ResourceMap
Actual type: Behavior (Behavior ResourceMap)
destro, a causa del tipo di accumB
il comportamento deve essere nel contesto di un MonadMoment
. Avere uno sguardo a MonadMoment
trovo due istanze
instance MonadMoment Moment where liftMoment = id
instance MonadMoment MomentIO where liftMoment = MIO . unM
Allora perché il tipo di volontà reale di Behavior (Behavior ResourceMap)
, il tipo di esterno deve essere un MonadMoment
, che non corrisponde.
Vorrei ricevere consigli su come risolvere questo tipo di problema, succede con tutte le mie definizioni Behavior
.
solo curioso: è un progetto vero o un hobby? –
È vero, ma non è un gioco qua qua. È un gioco che ha uno scopo diverso dal semplice gioco. –