packages feed

unpack-funcs 0.1.1 → 0.1.2

raw patch · 3 files changed

+16/−6 lines, 3 files

Files

Control/Monad/Unpack.hs view
@@ -1,8 +1,9 @@ {-# LANGUAGE TypeOperators, TypeFamilies, TemplateHaskell #-}-module Control.Monad.Unpack (module Control.Monad.Unpack.Class, (:~>), unpack, ($~)) where+module Control.Monad.Unpack (module Control.Monad.Unpack.Class, (:~>), unpack, ($~), unpack1Instance, unpackInstance, noUnpackInstance) where  import Data.Functor.Identity +import Control.Monad import Control.Monad.Unpack.Class import Control.Monad.Unpack.TH @@ -46,6 +47,7 @@ $(noUnpackInstance ''Bool) $(noUnpackInstance ''Maybe) $(noUnpackInstance ''Either)+$(liftM concat (mapM tupleInstance [2..10]))  instance Unpackable () where   newtype UnpackedReaderT () m a = Result {runResult :: m a}
Control/Monad/Unpack/TH.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE TemplateHaskell, QuasiQuotes #-}-module Control.Monad.Unpack.TH (unpack1Instance, unpackInstance, noUnpackInstance) where+module Control.Monad.Unpack.TH (unpack1Instance, unpackInstance, noUnpackInstance, tupleInstance) where  import Control.Monad import Control.Monad.Unpack.Class@@ -41,6 +41,14 @@ tyVarBndrName  :: TyVarBndr -> Name tyVarBndrName (PlainTV var) = var tyVarBndrName (KindedTV var _) = var++tupleInstance :: Int -> Q [Dec]+tupleInstance n = do+  argNames <- mapM (\ c -> newName [c]) (take n ['a'..])+  unpacker [ClassP ''Unpackable [VarT argName] | argName <- argNames]+    (tupleTypeName n)+    (map PlainTV argNames)+    (NormalC (tupleDataName n) [(NotStrict, VarT argName) | argName <- argNames])  unpacker1 :: Cxt -> Name -> [TyVarBndr] -> Con -> Q [Dec] unpacker1 cxt tyCon tyArgs con = case conArgs con of
unpack-funcs.cabal view
@@ -1,5 +1,5 @@ name:		     unpack-funcs-version:             0.1.1+version:             0.1.2 cabal-version:       >= 1.6 tested-with:	     GHC category:            Control@@ -22,8 +22,8 @@ ghc-options:   -Wall -fno-warn-name-shadowing -fno-warn-orphans exposed-modules:  -  Control.Monad.Unpack,-  Control.Monad.Unpack.TH+  Control.Monad.Unpack other-modules:-  Control.Monad.Unpack.Class+  Control.Monad.Unpack.Class,+  Control.Monad.Unpack.TH }