on develop help sign in
Add instance HasJS x (ReaderT r m)
commit1eb42c2348fbaf0abdb04087ad0a4c29e0c43efa authorRyan Trinkle <ryan.trinkle@gmail.com> dateThu 30 Jul 2015, 17:55 (11 years ago) parentd2bd15f
1 file changed+7−2
src/Foreign/JavaScript/TH.hs+7−2
src/Foreign/JavaScript/TH.hs+7−2
@@ -1,4 +1,4 @@
1−{-# LANGUAGE ForeignFunctionInterface, CPP, TemplateHaskell, TypeFamilies, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, StandaloneDeriving, GeneralizedNewtypeDeriving, ExistentialQuantification, FunctionalDependencies, EmptyDataDecls, FlexibleContexts, RankNTypes #-}
1+{-# LANGUAGE ForeignFunctionInterface, CPP, TemplateHaskell, TypeFamilies, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, StandaloneDeriving, GeneralizedNewtypeDeriving, ExistentialQuantification, FunctionalDependencies, EmptyDataDecls, FlexibleContexts, RankNTypes, UndecidableInstances #-}
22#ifdef __GHCJS__
33{-# LANGUAGE JavaScriptFFI #-}
44#endif
@@ -33,6 +33,7 @@ import Control.Monad
3333import Control.Monad.Fix
3434import Control.Monad.IO.Class
3535import Control.Monad.Exception
36+import Control.Monad.Reader
3637import Foreign.Marshal
3738import Data.ByteString (ByteString)
3839import qualified Data.ByteString as BS
@@ -59,10 +60,14 @@ instance FromJS x (JSFun x) where
5960class IsJSContext x where
6061 data JSRef x
6162
62−class (MonadIO (JSM m), MonadFix (JSM m), MonadJS x (JSM m)) => HasJS x m | m -> x where
63+class (Monad m, MonadIO (JSM m), MonadFix (JSM m), MonadJS x (JSM m)) => HasJS x m | m -> x where
6364 type JSM m :: * -> *
6465 liftJS :: JSM m a -> m a
6566
67+instance HasJS x m => HasJS x (ReaderT r m) where
68+ type JSM (ReaderT r m) = JSM m
69+ liftJS = lift . liftJS
70+
6671-- | A Monad that is capable of executing JavaScript
6772class Monad m => MonadJS x m | m -> x where
6873 runJS :: JSFFI -> [JSRef x] -> m (JSRef x)