Solutions by @spavikevik.
- Observe general type class pattern in
learnfp/typeclass/TypeClass.scala
. - Implement
learnfp/typeclass/TotalOrder.scala
- Implement
learnfp/typeclass/Show.scala
- Implement
learnfp/typeclass/Eq.scala
- Extra material:
- Observe general monoid pattern in
learnfp/monoid/Monoid.scala
- Implement
learn-fp/src/main/scala/learnfp/monoid/ListMonoid.scala
- Implement
learn-fp/src/main/scala/learnfp/monoid/SimpleMonoid.scala
- Implement
learnfp/monoid/PairAdditiveMonoid.scala
- Extra material:
- Bartosz Milewski: Category Theory 3.1: Examples of categories, orders, monoids
- Observe general functor pattern in
learnfp/functor/Functor.scala
- Implement
learnfp/functor/Id.scala
- Implement
learnfp/functor/Maybe.scala
- Implement
learnfp/functor/List.scala
- Implement
learnfp/functor/Disjunction.scala
- Implement
learnfp/functor/Writer.scala
- Implement
learnfp/functor/State.scala
- Extra material:
- http://learnyouahaskell.com/functors-applicative-functors-and-monoids
- https://thedet.wordpress.com/2012/04/28/functors-monads-applicatives-can-be-so-simple/
- Bartosz Milewski: Category Theory 6.1: Functors
- Observe general monad pattern in
learnfp/monad/Monad.scala
- Implement
learnfp/monad/Id.scala
- Implement
learnfp/monad/Maybe.scala
- Implement
learnfp/monad/List.scala
- Implement
learnfp/monad/Disjunction.scala
- Implement
learnfp/monad/Writer.scala
- Implement
learnfp/monad/State.scala
- Extra material
- Brian Beckman: Don't fear the Monad
- http://eed3si9n.com/learning-scalaz/Monad+transformers.html
- Implement foldable in
learnfp/foldable/Foldable.scala
- Observe general applicative pattern in
learnfp/applicative/Applicative.scala
- Implement
learnfp/applicative/Id.scala
- Implement
learnfp/applicative/Maybe.scala
- Implement
learnfp/applicative/List.scala
- Implement
learnfp/applicative/Disjunction.scala
- Implement
learnfp/applicative/Writer.scala
- Implement
learnfp/applicative/State.scala
- Extra material
- Implement
learnfp/traversable/Traversable.scala
- Implement
learnfp/nested/Nested.scala
- Implement
learnfp/nested/IO.scala
- Observe general monad transformer typeclass in
learnfp/transformer/MonadTransformer.scala
- Implement
learnfp/transformer/IdT.scala
- Implement
learnfp/transformer/MaybeT.scala
- Implement
learnfp/transformer/WriterT.scala
- Implement
learnfp/transformer/StateT.scala
- Extra material:
- Implement
learnfp/free/Free.scala
and pass all unit tests inlearn-fp/src/test/scala/learnfp/free/FreeTest.scala
- Extra material:
- Observe general contravariant functor pattern in
learnfp/contravariant/ContravariantFunctor.scala
- Implement
learnfp/contravariant/Show.scala
- Implement
learnfp/contravariant/Predicate.scala
- Observe general comonad pattern in
learnfp/comonad/CoMonad.scala
- Implement
learnfp/comonad/Id.scala
- Implement
learnfp/comonad/Env.scala
- Implement Reader functor, monad, applicative and write unit tests for that
- Implement ReaderT and write unit tests for that
- Implement applicative for monad transformers
- Implement applicative for Free
- Yuriy Netesov (@dehun)