Hier ist Code, der zur Arbeit verwendet (abgeschnitten angemessen Ich hoffe)Reactive Banana 1.0.0 - Warum bricht dieser alte Code?
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
Aber jetzt sind die Typen geändert haben.
haben wir:
makeNetworkDescription :: Parameters -> MomentIO()
und accumB :: MonadMoment m => a -> Event (a -> a) -> m (Behavior a)
sagen, dass ich die Definition von bResourceMap
zu
bResourceMap :: Behavior ResourceMap
bResourceMap = accumB initRmap $
adjustMarket <$>
bMarketRolls <@
eTick
etwas weg von der accumB
Definition zu ändern, aber mal sehen, was passiert.
ghc
gibt einen Fehler
Couldn't match type ‘Behavior ResourceMap’ with ‘ResourceMap’
Expected type: Behavior ResourceMap
Actual type: Behavior (Behavior ResourceMap)
Rechts, wegen der Art der accumB
das Verhalten im Rahmen eines MonadMoment
sein muss. So mit einem Blick auf MonadMoment
finde ich zwei Instanzen
instance MonadMoment Moment where liftMoment = id
instance MonadMoment MomentIO where liftMoment = MIO . unM
warum Behavior (Behavior ResourceMap)
den tatsächlichen Typ Entschlossenheit hat, der äußere Typ hat eine MonadMoment
sein, die nicht übereinstimmt.
Ich hätte gerne Ratschläge zur Lösung dieser Art von Problem, es passiert mit allen meinen Behavior
Definitionen.
nur neugierig: Ist das ein echtes oder Hobby-Projekt? –
Es ist echt, aber kein Spiel als Spiel. Es ist ein Spiel, das einen anderen Zweck erfüllt als nur ein Spiel zu sein. –