From 38970b9cd57fb23ce898560979aa8fb63ade9284 Mon Sep 17 00:00:00 2001 From: Kiana Sheibani Date: Tue, 14 Mar 2023 12:52:45 -0400 Subject: [PATCH] Fix Traversing default implementation --- Data/Profunctor/Traversing.idr | 12 +++++++++++- profunctors.ipkg | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Data/Profunctor/Traversing.idr b/Data/Profunctor/Traversing.idr index d007624..bb3d7c4 100644 --- a/Data/Profunctor/Traversing.idr +++ b/Data/Profunctor/Traversing.idr @@ -9,6 +9,11 @@ import Data.Profunctor %default total +------------------------------------------------------------------------------ +-- Default implementation machinery +------------------------------------------------------------------------------ + + [FoldablePair] Foldable (Pair c) where foldr op init (_, x) = x `op` init foldl op init (_, x) = init `op` x @@ -61,6 +66,11 @@ Foldable (Baz t b) where Traversable (Baz t b) where traverse f bz = map (\m => MkBaz (runBazaar m)) $ runBaz bz @{Compose} $ \x => sell <$> f x +export +wanderDef : Profunctor p => (forall f. Traversable f => p a b -> p (f a) (f b)) + -> (forall f. Applicative f => (a -> f b) -> s -> f t) -> p a b -> p s t +wanderDef tr f = dimap (\s => MkBaz $ \afb => f afb s) sold . tr + ------------------------------------------------------------------------------ -- Traversing interface @@ -82,7 +92,7 @@ interface (Strong p, Choice p) => Traversing p where traverse' = wander traverse wander : (forall f. Applicative f => (a -> f b) -> s -> f t) -> p a b -> p s t - wander f = dimap (\s => MkBaz $ \afb => f afb s) sold . traverse' + wander = wanderDef traverse' ------------------------------------------------------------------------------ diff --git a/profunctors.ipkg b/profunctors.ipkg index 61a5d98..4959d9d 100644 --- a/profunctors.ipkg +++ b/profunctors.ipkg @@ -1,5 +1,5 @@ package profunctors -version = 1.1.0 +version = 1.1.1 authors = "Kiana Sheibani" license = "MIT"