summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2023-05-28 01:56:59 +0100
committerYann Herklotz <git@yannherklotz.com>2023-05-28 01:56:59 +0100
commitfcee1c0c8c9c8ddce45f26c566b5eb8527e9dd0b (patch)
treee1724baaeccc299dcae13495091ecd3c3724e8ed
parent8d1403b13e75b5eda672af64fb52afe5a0b1f633 (diff)
downloadzk-visual-fcee1c0c8c9c8ddce45f26c566b5eb8527e9dd0b.tar.gz
zk-visual-fcee1c0c8c9c8ddce45f26c566b5eb8527e9dd0b.zip
Add type annotations to query function
-rw-r--r--src/Zettel/Types.hs31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/Zettel/Types.hs b/src/Zettel/Types.hs
index 2b8d23d..580052b 100644
--- a/src/Zettel/Types.hs
+++ b/src/Zettel/Types.hs
@@ -1,9 +1,9 @@
{-# LANGUAGE DerivingVia #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE StandaloneDeriving #-}
module Zettel.Types
( Combine (..),
@@ -18,8 +18,8 @@ module Zettel.Types
where
import Text.Pandoc.Builder (ToMetaValue (..))
-import Text.Pandoc.Definition (Inline (..), Pandoc (..), Block (..), Row (..), Caption (..), TableHead(..), TableBody(..), TableFoot(..), Meta(..), MetaValue(..))
-import Text.Pandoc.Walk (Walkable(..))
+import Text.Pandoc.Definition (Block (..), Caption (..), Inline (..), Meta (..), MetaValue (..), Pandoc (..), Row (..), TableBody (..), TableFoot (..), TableHead (..))
+import Text.Pandoc.Walk (Walkable (..))
class Combine a where
cappend :: a -> a -> a
@@ -97,12 +97,17 @@ instance Combine Zettel where
cempty = Zettel cempty cempty cempty cempty cempty
-walkMZettel :: (Walkable a Pandoc, Monad m, Applicative m, Functor m)
- => (a -> m a) -> Zettel -> m Zettel
+walkMZettel ::
+ (Walkable a Pandoc, Monad m, Applicative m, Functor m) =>
+ (a -> m a) ->
+ Zettel ->
+ m Zettel
walkMZettel f b = do
res <- walkM f (zettelBody b)
return b {zettelBody = res}
+queryZettel ::
+ (Walkable a Pandoc, Monoid c) => (a -> c) -> Zettel -> c
queryZettel f = query f . zettelBody
instance Walkable Block Zettel where
@@ -139,13 +144,19 @@ data ZettelGraph = ZettelGraph
}
deriving (Show, Eq)
-walkMZettelGraph :: (Walkable a Pandoc, Walkable a Zettel, Monad m, Applicative m, Functor m)
- => (a -> m a) -> ZettelGraph -> m ZettelGraph
+walkMZettelGraph ::
+ (Walkable a Pandoc, Walkable a Zettel, Monad m, Applicative m, Functor m) =>
+ (a -> m a) ->
+ ZettelGraph ->
+ m ZettelGraph
walkMZettelGraph f b = do
res <- traverse (walkM f) (unZettelGraph b)
newBib <- traverse (walkM f) (zettelGraphBib b)
return $ ZettelGraph res newBib
+queryZettelGraph
+ :: (Monoid a1, Walkable a2 Zettel, Walkable a2 Pandoc) =>
+ (a2 -> a1) -> ZettelGraph -> a1
queryZettelGraph f g = query f (unZettelGraph g) <> maybe mempty (query f) (zettelGraphBib g)
instance Walkable Block ZettelGraph where
@@ -176,4 +187,4 @@ instance Walkable [Inline] ZettelGraph where
walkM = walkMZettelGraph
query = queryZettelGraph
---instance Walkable ZettelGraph
+-- instance Walkable ZettelGraph