@@ -11,21 +11,12 @@ module Control.Distributed.Process.Internal.Dynamic
1111 , fromDyn
1212 , fromDynamic
1313 , dynTypeRep
14− , dynBind
15− , dynBind'
1614 , dynApply
1715 , dynApp
1816 , GHC.unsafeCoerce#
1917 ) where
2018
21−import Data.Typeable
22− ( Typeable
23− , TypeRep
24− , typeOf
25− , TyCon
26− , splitTyConApp
27− , funResultTy
28− )
19+import Data.Typeable (Typeable, TypeRep, typeOf, funResultTy)
2920import qualified GHC.Prim as GHC (Any, unsafeCoerce#)
3021import Data.Maybe (fromMaybe)
3122
@@ -52,20 +43,6 @@ dynTypeRep (Dynamic t _) = t
5243instance Show Dynamic where
5344 show = show . dynTypeRep
5445
55−dynBind :: TyCon -> (forall a b. m a -> (a -> m b) -> m b) -> Dynamic -> Dynamic -> Maybe Dynamic
56−dynBind m bind (Dynamic t1 x) (Dynamic t2 f) =
57− case splitTyConApp t1 of
58− (m', [a]) | m' == m ->
59− case funResultTy t2 a of
60− Just mb -> Just (Dynamic mb (GHC.unsafeCoerce# bind x f))
61− _ -> Nothing
62− _ -> Nothing
63−
64−dynBind' :: TyCon -> (forall a b. m a -> (a -> m b) -> m b) -> Dynamic -> Dynamic -> Dynamic
65−dynBind' m bind x f = fromMaybe (error typeError) (dynBind m bind x f)
66− where
67− typeError = "Type error in dynamic bind.\nCan't bind " ++ show x ++ " to " ++ show f
68−
6946dynApply :: Dynamic -> Dynamic -> Maybe Dynamic
7047dynApply (Dynamic t1 f) (Dynamic t2 x) =
7148 case funResultTy t1 t2 of