@@ -2025,19 +2025,19 @@ instance R.Reflex (SpiderEnv x) where
2025 {-# INLINABLE pull #-}
2025 {-# INLINABLE pull #-}
2026 pull = SpiderBehavior . pull . coerce
2026 pull = SpiderBehavior . pull . coerce
2027 {-# INLINABLE merge #-}
2027 {-# INLINABLE merge #-}
2028− merge = SpiderEvent . merge . DynamicConst . (unsafeCoerce :: DMap k (R.Event (SpiderEnv x)) -> DMap k (Event x))
2028+ merge = SpiderEvent . merge . DynamicConst . (coerce :: DMap k (R.Event (SpiderEnv x)) -> DMap k (Event x))
2029 {-# INLINABLE fan #-}
2029 {-# INLINABLE fan #-}
2030 fan e = R.EventSelector $ SpiderEvent . select (fan (unSpiderEvent e))
2030 fan e = R.EventSelector $ SpiderEvent . select (fan (unSpiderEvent e))
2031 {-# INLINABLE switch #-}
2031 {-# INLINABLE switch #-}
2032 switch = SpiderEvent . switch . (unsafeCoerce :: Behavior x (R.Event (SpiderEnv x) a) -> Behavior x (Event x a)) . unSpiderBehavior
2032 switch = SpiderEvent . switch . (unsafeCoerce :: Behavior x (R.Event (SpiderEnv x) a) -> Behavior x (Event x a)) . unSpiderBehavior
2033 {-# INLINABLE coincidence #-}
2033 {-# INLINABLE coincidence #-}
2034− coincidence = SpiderEvent . coincidence . (unsafeCoerce :: Event x (R.Event (SpiderEnv x) a) -> Event x (Event x a)) . unSpiderEvent
2034+ coincidence = SpiderEvent . coincidence . (coerce :: Event x (R.Event (SpiderEnv x) a) -> Event x (Event x a)) . unSpiderEvent
2035 {-# INLINABLE current #-}
2035 {-# INLINABLE current #-}
2036 current = SpiderBehavior . current . unSpiderDynamic
2036 current = SpiderBehavior . current . unSpiderDynamic
2037 {-# INLINABLE updated #-}
2037 {-# INLINABLE updated #-}
2038 updated = SpiderEvent . fmap runIdentity . updated . unSpiderDynamic
2038 updated = SpiderEvent . fmap runIdentity . updated . unSpiderDynamic
2039 {-# INLINABLE unsafeBuildDynamic #-}
2039 {-# INLINABLE unsafeBuildDynamic #-}
2040− unsafeBuildDynamic readV0 v' = SpiderDynamic $ DynamicDynIdentity $ unsafeDyn (coerce readV0) $ addIdentity $ unSpiderEvent v'
2040+ unsafeBuildDynamic readV0 v' = SpiderDynamic $ DynamicDynIdentity $ unsafeDyn (coerce readV0) $ coerce $ unSpiderEvent v'
2041 {-# INLINABLE unsafeBuildIncremental #-}
2041 {-# INLINABLE unsafeBuildIncremental #-}
2042 unsafeBuildIncremental readV0 dv = SpiderIncremental $ DynamicDyn $ unsafeDyn (coerce readV0) $ unSpiderEvent dv
2042 unsafeBuildIncremental readV0 dv = SpiderIncremental $ DynamicDyn $ unsafeDyn (coerce readV0) $ unSpiderEvent dv
2043 {-# INLINABLE mergeIncremental #-}
2043 {-# INLINABLE mergeIncremental #-}
@@ -2064,10 +2064,10 @@ instance R.MonadHold (SpiderEnv x) (EventM x) where
2064 holdIncremental = holdIncrementalSpiderEventM
2064 holdIncremental = holdIncrementalSpiderEventM
2066holdSpiderEventM :: a -> R.Event (SpiderEnv x) a -> EventM x (R.Behavior (SpiderEnv x) a)
2066holdSpiderEventM :: a -> R.Event (SpiderEnv x) a -> EventM x (R.Behavior (SpiderEnv x) a)
2067−holdSpiderEventM v0 e = fmap (SpiderBehavior . BehaviorHoldIdentity) $ hold v0 $ addIdentity $ unSpiderEvent e
2067+holdSpiderEventM v0 e = fmap (SpiderBehavior . BehaviorHoldIdentity) $ hold v0 $ coerce $ unSpiderEvent e
2069holdDynSpiderEventM :: a -> R.Event (SpiderEnv x) a -> EventM x (R.Dynamic (SpiderEnv x) a)
2069holdDynSpiderEventM :: a -> R.Event (SpiderEnv x) a -> EventM x (R.Dynamic (SpiderEnv x) a)
2070−holdDynSpiderEventM v0 e = fmap (SpiderDynamic . DynamicHoldIdentity) $ hold v0 $ addIdentity $ unSpiderEvent e
2070+holdDynSpiderEventM v0 e = fmap (SpiderDynamic . DynamicHoldIdentity) $ hold v0 $ coerce $ unSpiderEvent e
2072holdIncrementalSpiderEventM :: R.Patch p => a -> R.Event (SpiderEnv x) (p a) -> EventM x (R.Incremental (SpiderEnv x) p a)
2072holdIncrementalSpiderEventM :: R.Patch p => a -> R.Event (SpiderEnv x) (p a) -> EventM x (R.Incremental (SpiderEnv x) p a)
2073holdIncrementalSpiderEventM v0 e = fmap (SpiderIncremental . DynamicHold) $ hold v0 $ unSpiderEvent e
2073holdIncrementalSpiderEventM v0 e = fmap (SpiderIncremental . DynamicHold) $ hold v0 $ unSpiderEvent e
@@ -2096,7 +2096,7 @@ instance R.MonadHold (SpiderEnv x) (SpiderPushM x) where
2096 {-# INLINABLE hold #-}
2096 {-# INLINABLE hold #-}
2097 hold v0 e = R.current <$> R.holdDyn v0 e
2097 hold v0 e = R.current <$> R.holdDyn v0 e
2098 {-# INLINABLE holdDyn #-}
2098 {-# INLINABLE holdDyn #-}
2099− holdDyn v0 (SpiderEvent e) = SpiderPushM $ fmap (SpiderDynamic . DynamicHoldIdentity) $ hold v0 $ addIdentity e
2099+ holdDyn v0 (SpiderEvent e) = SpiderPushM $ fmap (SpiderDynamic . DynamicHoldIdentity) $ hold v0 $ coerce e
2100 {-# INLINABLE holdIncremental #-}
2100 {-# INLINABLE holdIncremental #-}
2101 holdIncremental v0 (SpiderEvent e) = SpiderPushM $ SpiderIncremental . DynamicHold <$> hold v0 e
2101 holdIncremental v0 (SpiderEvent e) = SpiderPushM $ SpiderIncremental . DynamicHold <$> hold v0 e
@@ -2182,15 +2182,11 @@ instance Monad (SpiderHostFrame x) where
2182instance R.MonadSample (SpiderEnv x) (SpiderHostFrame x) where
2182instance R.MonadSample (SpiderEnv x) (SpiderHostFrame x) where
2183 sample = SpiderHostFrame . readBehaviorUntracked . unSpiderBehavior --TODO: This can cause problems with laziness, so we should get rid of it if we can
2183 sample = SpiderHostFrame . readBehaviorUntracked . unSpiderBehavior --TODO: This can cause problems with laziness, so we should get rid of it if we can
2185−addIdentity :: Event x a -> Event x (Identity a)
2186−--addIdentity = fmap Identity
2187−addIdentity = unsafeCoerce
2189instance R.MonadHold (SpiderEnv x) (SpiderHostFrame x) where
2185instance R.MonadHold (SpiderEnv x) (SpiderHostFrame x) where
2190 {-# INLINABLE hold #-}
2186 {-# INLINABLE hold #-}
2191− hold v0 e = SpiderHostFrame $ fmap (SpiderBehavior . BehaviorHoldIdentity) $ hold v0 $ addIdentity $ unSpiderEvent e
2187+ hold v0 e = SpiderHostFrame $ fmap (SpiderBehavior . BehaviorHoldIdentity) $ hold v0 $ coerce $ unSpiderEvent e
2192 {-# INLINABLE holdDyn #-}
2188 {-# INLINABLE holdDyn #-}
2193− holdDyn v0 e = SpiderHostFrame $ fmap (SpiderDynamic . DynamicHoldIdentity) $ hold v0 $ addIdentity $ unSpiderEvent e
2189+ holdDyn v0 e = SpiderHostFrame $ fmap (SpiderDynamic . DynamicHoldIdentity) $ hold v0 $ coerce $ unSpiderEvent e
2194 {-# INLINABLE holdIncremental #-}
2190 {-# INLINABLE holdIncremental #-}
2195 holdIncremental v0 e = SpiderHostFrame $ fmap (SpiderIncremental . DynamicHold) $ hold v0 $ unSpiderEvent e
2191 holdIncremental v0 e = SpiderHostFrame $ fmap (SpiderIncremental . DynamicHold) $ hold v0 $ unSpiderEvent e