@@ -1,12 +1,12 @@
1-- | Template Haskell support
1-- | Template Haskell support
2−--
2+{-# LANGUAGE TemplateHaskell #-}
3−-- (In a separate file for convenience)
4module Control.Distributed.Process.Internal.Closure.TH
3module Control.Distributed.Process.Internal.Closure.TH
5 ( -- * User-level API
4 ( -- * User-level API
8 , functionSDict
7 , functionSDict
9 , functionTDict
8 , functionTDict
12import Prelude hiding (lookup)
12import Prelude hiding (lookup)
@@ -40,17 +40,21 @@ import Language.Haskell.TH
43−import Control.Distributed.Process.Internal.Types (Process)
43+import Data.Binary (encode)
44−import Control.Distributed.Process.Serializable
44+import Data.Rank1Dynamic (toDynamic)
45− ( SerializableDict(SerializableDict)
47import Control.Distributed.Static
45import Control.Distributed.Static
48 ( RemoteTable
46 ( RemoteTable
49 , registerStatic
47 , registerStatic
51 , staticLabel
49 , staticLabel
53−import Data.Rank1Dynamic (toDynamic)
53+import Control.Distributed.Process.Internal.Types (Process)
54+import Control.Distributed.Process.Serializable
55+ ( SerializableDict(SerializableDict)
57+import Control.Distributed.Process.Internal.Closure.BuiltIn (staticDecode)
55--------------------------------------------------------------------------------
59--------------------------------------------------------------------------------
56-- User-level API --
60-- User-level API --
@@ -86,6 +90,12 @@ functionSDict = varE . sdictName
86functionTDict :: Name -> Q Exp
90functionTDict :: Name -> Q Exp
87functionTDict = varE . tdictName
91functionTDict = varE . tdictName
93+mkClosure :: Name -> Q Exp
95+ [| Closure ($(mkStatic n) `staticCompose` staticDecode $(functionSDict n))
89--------------------------------------------------------------------------------
99--------------------------------------------------------------------------------
90-- Internal (Template Haskell) --
100-- Internal (Template Haskell) --
91--------------------------------------------------------------------------------
101--------------------------------------------------------------------------------