From d3ebc8b77d5748c9b2aa48885929d72b7c8c6d06 Mon Sep 17 00:00:00 2001 From: Mahdi Dibaiee Date: Tue, 17 Oct 2017 13:47:34 +0330 Subject: [PATCH] post(typoclassopedia): Traversable --- ...-09-27-typoclassopedia-exercise-answers.md | 130 ++++++++++++++++++ img/typoclassopedia/tree.jpg | Bin 0 -> 54503 bytes 2 files changed, 130 insertions(+) create mode 100644 img/typoclassopedia/tree.jpg diff --git a/_posts/2017-09-27-typoclassopedia-exercise-answers.md b/_posts/2017-09-27-typoclassopedia-exercise-answers.md index 1f9b05a..ae16848 100644 --- a/_posts/2017-09-27-typoclassopedia-exercise-answers.md +++ b/_posts/2017-09-27-typoclassopedia-exercise-answers.md @@ -918,3 +918,133 @@ class Foldable t where ``` The additional constraint for implementing `traverse_` in terms of `sequenceA_` is the requirement of the `Foldable` instance `t` to be a `Functor` as well. + +Traversable +=========== + +## Intuition + +```haskell +traverse :: Applicative f => (a -> f b) -> t a -> f (t b) +sequenceA :: Applicative f => t (f a) -> f (t a) +``` + +### Exercises + +1. There are at least two natural ways to turn a tree of lists into a list of trees. What are they, and why? + + Note: I'm not really sure whether my solution is _natural_, I think the question is rather ambiguous in the sense that it's not clear whether the trees in the final list of trees can have lists as their values, i.e. `Tree [Int] -> [Tree [Int]]` is valid or only `Tree [Int] -> [Tree Int]` is, but let me know if you think otherwise. + + **Solution**: + + One way is to put each `Node`, `Leaf` or `Empty` in a list in-order, this way the structure of the tree can be recovered from the list, here is a quick sketch (`[]` is an arbitrary list): + + ![tree to list](/img/typoclassopedia/tree.jpg) + + ```haskell + let tree = Node (Node (Leaf []) Empty) [] (Leaf []) + let list = [Node Empty [] Empty, Node Empty [] Empty, Leaf [], Empty, Leaf []] + ``` + +2. Give a natural way to turn a list of trees into a tree of lists. + + **Solution**: + + To recover the original tree from the list of trees, whenever we encounter a `Node` in the list, we catch the next three values as left, value, and right nodes of the original node. + +3. What is the type of `traverse . traverse`? What does it do? + + **Solution**: + + ```haskell + (traverse . traverse) :: Applicative f => (a -> f b) -> t (t2 a) -> f (t (t2 b)) + ``` + + It traverses on a deeper level, retaining the structure of the first level. + +4. Implement `traverse` in terms of `sequenceA`, and vice versa. + + **Solution**: + + ```haskell + sequenceA = traverse id + + traverseA f c = sequenceA (fmap f c) + ``` + +## Instances and examples + +### Exercises + +1. Implement `fmap` and `foldMap` using only the `Traversable` methods. (Note that the `Traversable` module provides these implementations as `fmapDefault` and `foldMapDefault`.) + + **Solution**: + + ```haskell + newtype Id a = Id { getId :: a } + + instance Functor Id where + fmap f (Id x) = Id (f x) + + instance Applicative Id where + pure x = Id x + (Id f) <*> (Id x) = Id (f x) + + fmapDefault :: Traversable t => (a -> b) -> t a -> t b + fmapDefault f = getId . traverse (Id . f) + + foldMapDefault :: (Monoid m, Traversable t) => (a -> m) -> t a -> m + foldMapDefault f = getConst . traverse (Const . f) + ``` + + See the [Const](https://www.stackage.org/haddock/lts-9.9/base-4.9.1.0/src/Data-Functor-Const.html#Const) Functor's definition for intuition. + +2. Implement `Traversable` instances for `[]`, `Maybe`, `((,) a)`, and `Either a`. + + **Solution**: + + ```haskell + instance Traversable [] where + traverse :: Applicative f => (a -> f b) -> [a] -> f [b] + traverse _ [] = pure [] + traverse f (x:xs) = (:) <$> f x <*> Main.traverse f xs + + instance Traversable Maybe where + traverse :: Applicative f => (a -> f b) -> Maybe a -> f (Maybe b) + + traverse _ Nothing = pure Nothing + traverse f (Just x) = Just <$> f x + + instance Traversable ((,) c) where + traverse :: Applicative f => (a -> f b) -> (c, a) -> f (c, b) + + traverse f (c, a) = (,) c <$> f a + + instance Traversable (Either c) where + traverse :: Applicative f => (a -> f b) -> Either c a -> f (Either c b) + + traverse _ (Left c) = pure (Left c) + traverse f (Right a) = Right <$> f a + ``` + +3. Explain why `Set` is `Foldable` but not `Traversable`. + + **Solution**: + + First, in terms of laws, `Set` is not a `Functor`, thus it cannot be made into a `Traversable` instance, since `Traversable` instances require `Functor` superclasses. + + Second, on an intuitive level: In `Foldable`, the goal is not to keep the shape/structure of the original container, we are trying to reduce the container into some value, and the shape of the final result doesn't matter, but in `Traversable`, we ought to keep the structure of the final result, but we can't guarantee this while using `Set`s, because we can define some transformation `f :: Set a -> Set a` which reduces the length of the `Set`. + + + See [Foldable vs. Traversable](https://stackoverflow.com/questions/35857733/foldable-vs-traversable) and [Sets, Functors and Eq confusion](https://stackoverflow.com/questions/19177125/sets-functors-and-eq-confusion). and [Foldable and Traversable](https://wiki.haskell.org/Foldable_and_Traversable) for more details. + +4. Show that `Traversable` functors compose: that is, implement an instance for `Traversable (Compose f g)` given `Traversable` instances for `f` and `g`. + + **Solution**: + + ```haskell + instance (Traversable f, Traversable g) => Traversable (Compose f g) where + traverse :: (Applicative f) => (a -> f b) -> Compose g h a -> f (Compose g h b) + traverse f (Compose t) = Compose <$> traverse (traverse f) t + ``` + diff --git a/img/typoclassopedia/tree.jpg b/img/typoclassopedia/tree.jpg new file mode 100644 index 0000000000000000000000000000000000000000..627932a0cb4115534a766a8caa0fa13ae3314298 GIT binary patch literal 54503 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 literal 0 HcmV?d00001