packages feed

unpack-funcs 0.2.0 → 0.3.0

raw patch · 2 files changed

+16/−4 lines, 2 files

Files

Control/Monad/Unpack/TH.hs view
@@ -5,7 +5,13 @@ import Control.Monad.Unpack.Class  import Language.Haskell.TH+import System.IO.Unsafe+import Data.IORef +-- Apparently, newName still generates name conflicts in GHC 7.2?  Really, really weird.+uglyUnique :: IORef Int+uglyUnique = unsafePerformIO (newIORef 0)+ -- | Unpack wrappers around primitive types, like 'Int'. unpack1Instance :: Name -> Q [Dec] unpack1Instance tycon = do@@ -50,6 +56,9 @@     (map PlainTV argNames)     (NormalC (tupleDataName n) [(NotStrict, VarT argName) | argName <- argNames]) +getUnique :: Q Int+getUnique = runIO (atomicModifyIORef uglyUnique (\ n -> (n+1, n)))+ unpacker1 :: Cxt -> Name -> [TyVarBndr] -> Con -> Q [Dec] unpacker1 cxt tyCon tyArgs con = case conArgs con of   (conName, conArgs) -> do@@ -61,7 +70,8 @@ 	    inline, 	  PragmaD $ InlineP (mkName "unpackedReaderT") 	    inline]-    funcName <- newName "UnpackedReaderT"+    u <- getUnique+    funcName <- newName $ "UnpackedReaderTCon" ++ show u     mName <- newName "m"     aName <- newName "a"     fName <- newName "func"@@ -88,7 +98,8 @@ 	    inline, 	  PragmaD $ InlineP (mkName "unpackedReaderT") 	    inline]-    funcName <- newName "UnpackedReaderT"+    u <- getUnique+    funcName <- newName $ "UnpackedReaderT" ++ show u     mName <- newName "m"     aName <- newName "a"     fName <- newName "func"@@ -120,7 +131,8 @@ 	    inline, 	  PragmaD $ InlineP (mkName "unpackedReaderT") 	    inline]-    funcName <- newName "UnpackedReaderT"+    u <- getUnique+    funcName <- newName $ "UnpackedReaderT" ++ show u     mName <- newName "m"     aName <- newName "a"     fName <- newName "func"
unpack-funcs.cabal view
@@ -1,5 +1,5 @@ name:		     unpack-funcs-version:             0.2.0+version:             0.3.0 cabal-version:       >= 1.6 tested-with:	     GHC category:            Control