diff options
Diffstat (limited to 'lib/Phi/X11/Atoms.hs')
-rw-r--r-- | lib/Phi/X11/Atoms.hs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/Phi/X11/Atoms.hs b/lib/Phi/X11/Atoms.hs index a2708dd..38f8f3c 100644 --- a/lib/Phi/X11/Atoms.hs +++ b/lib/Phi/X11/Atoms.hs @@ -11,17 +11,15 @@ import Graphics.X11 import Phi.X11.AtomList -$(do - let atomsName = mkName "Atoms" - atomNames = map (\atom -> (atom, mkName ("atom" ++ atom))) atoms - fields = map (\(_, name) -> (name, IsStrict, ConT ''Atom)) atomNames - return [DataD [] atomsName [] [RecC atomsName fields] []] +$(let atomsName = mkName "Atoms" + atomNames = map (\atom -> (atom, mkName ("atom" ++ atom))) atoms + fields = map (\(_, name) -> (name, IsStrict, ConT ''Atom)) atomNames + in return [DataD [] atomsName [] [RecC atomsName fields] []] ) initAtoms :: Display -> IO Atoms initAtoms display = $(do - let atomsName = mkName "Atoms" atomNames <- mapM (\atom -> do varName <- newName ('_':atom) return (atom, mkName ("atom" ++ atom), varName) @@ -30,6 +28,7 @@ initAtoms display = \(atom, _, varName) -> liftM (BindS (VarP varName)) [| internAtom display atom False |] let atomFieldExps = map (\(_, atomName, varName) -> (atomName, VarE varName)) atomNames + atomsName = mkName "Atoms" atomsContruction = NoBindS $ AppE (VarE 'return) $ RecConE atomsName atomFieldExps return $ DoE $ atomInitializers ++ [atomsContruction] |