@@ -52,6 +52,7 @@ import Control.Distributed.Static
5252import Control.Distributed.Process.Serializable
5353 ( SerializableDict(..)
5454 , Serializable
55+ , TypeableDict(..)
5556 )
5657import Control.Distributed.Process.Internal.Types
5758 ( Process
@@ -84,7 +85,8 @@ remoteTable =
8485 . registerStatic "$sdictUnit" (toDynamic (SerializableDict :: SerializableDict ()))
8586 . registerStatic "$sdictProcessId" (toDynamic (SerializableDict :: SerializableDict ProcessId))
8687 . registerStatic "$sdictSendPort_" (toDynamic (sdictSendPort_ :: SerializableDict ANY -> SerializableDict (SendPort ANY)))
87− . registerStatic "$sdictClosure" (toDynamic (SerializableDict :: SerializableDict (Closure ANY)))
88+ . registerStatic "$sdictStatic" (toDynamic (sdictStatic_ :: TypeableDict ANY -> SerializableDict (Static ANY)))
89+ . registerStatic "$sdictClosure" (toDynamic (sdictClosure_ :: TypeableDict ANY -> SerializableDict (Closure ANY)))
8890 . registerStatic "$returnProcess" (toDynamic (return :: ANY -> Process ANY))
8991 . registerStatic "$seqProcess" (toDynamic ((>>) :: Process ANY1 -> Process ANY2 -> Process ANY2))
9092 . registerStatic "$bindProcess" (toDynamic ((>>=) :: Process ANY1 -> (ANY1 -> Process ANY2) -> Process ANY2))
@@ -105,6 +107,12 @@ remoteTable =
105107 sdictSendPort_ :: forall a. SerializableDict a -> SerializableDict (SendPort a)
106108 sdictSendPort_ SerializableDict = SerializableDict
107109
110+ sdictStatic_ :: forall a. TypeableDict a -> SerializableDict (Static a)
111+ sdictStatic_ TypeableDict = SerializableDict
112+
113+ sdictClosure_ :: forall a. TypeableDict a -> SerializableDict (Closure a)
114+ sdictClosure_ TypeableDict = SerializableDict
115+
108116 sendDict :: forall a. SerializableDict a -> ProcessId -> a -> Process ()
109117 sendDict SerializableDict = send
110118
@@ -148,12 +156,12 @@ sdictSendPort :: Typeable a
148156sdictSendPort = staticApply (staticLabel "$sdictSendPort_")
149157
150158-- | Serialization dictionary for 'Static'.
151−sdictStatic :: Typeable a => Static (SerializableDict (Static a))
152−sdictStatic = staticLabel "$sdictStatic"
159+sdictStatic :: Typeable a => Static (TypeableDict a) -> Static (SerializableDict (Static a))
160+sdictStatic = staticApply (staticLabel "$sdictStatic")
153161
154162-- | Serialization dictionary for 'Closure'.
155−sdictClosure :: Typeable a => Static (SerializableDict (Closure a))
156−sdictClosure = staticLabel "$sdictClosure"
163+sdictClosure :: Typeable a => Static (TypeableDict a) -> Static (SerializableDict (Closure a))
164+sdictClosure = staticApply (staticLabel "$sdictClosure")
157165
158166--------------------------------------------------------------------------------
159167-- Static values --