File tree 2 files changed +19
-2
lines changed
2 files changed +19
-2
lines changed Original file line number Diff line number Diff line change @@ -2,8 +2,9 @@ module Data.Query where
2
2
3
3
import Prelude
4
4
5
- import Control.Monad.Reader.Class (asks )
6
- import Control.Monad.Reader.Trans (ReaderT )
5
+ import Control.Monad.Reader.Class (ask , asks )
6
+ import Control.Monad.Reader.Trans (ReaderT , runReaderT )
7
+ import Control.Monad.Trans.Class (lift )
7
8
import Data.DataFrame (DataFrame (..))
8
9
import Data.Filterable (filter ) as Filterable
9
10
import Data.Foldable (foldr )
@@ -17,6 +18,17 @@ import Data.Tuple.Nested (type (/\))
17
18
18
19
type Query m a b = ReaderT (DataFrame a ) m (DataFrame b )
19
20
21
+ -- We should make (Query m) a Semigroupoid and use `compose` instead of this way
22
+ composeQuery
23
+ :: ∀ m a b c
24
+ . Monad m
25
+ => Query m a b
26
+ -> Query m b c
27
+ -> Query m a c
28
+ composeQuery q1 q2 = do
29
+ df <- ask
30
+ lift $ runReaderT q1 df >>= runReaderT q2
31
+
20
32
filter :: ∀ m a . Monad m => (a -> Boolean ) -> Query m a a
21
33
filter f = asks (Filterable .filter f)
22
34
Original file line number Diff line number Diff line change 1
1
module Test.Main where
2
2
3
3
import Prelude
4
+
5
+ import Control.Monad.Reader.Class (ask )
6
+ import Control.Monad.Reader.Trans (runReaderT )
7
+ import Control.Monad.Trans.Class (lift )
8
+ import Data.Query (Query )
4
9
import Effect (Effect )
5
10
import Effect.Console (log )
6
11
You can’t perform that action at this time.
0 commit comments