├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── answer └── src │ ├── main │ └── scala │ │ └── typeclass │ │ ├── Applicative.scala │ │ ├── Functor.scala │ │ ├── Monad.scala │ │ ├── Monoid.scala │ │ ├── Prelude.scala │ │ ├── Semigroup.scala │ │ ├── data │ │ ├── Bar.scala │ │ ├── Const.scala │ │ ├── Either.scala │ │ ├── First.scala │ │ ├── Foo.scala │ │ ├── Id.scala │ │ ├── Last.scala │ │ ├── Mult.scala │ │ ├── NonEmptyList.scala │ │ ├── Validation.scala │ │ └── ZipStream.scala │ │ ├── instances │ │ ├── Int.scala │ │ ├── List.scala │ │ ├── Long.scala │ │ ├── Option.scala │ │ └── String.scala │ │ └── syntax │ │ ├── applicative.scala │ │ ├── functor.scala │ │ ├── monad.scala │ │ ├── monoid.scala │ │ └── semigroup.scala │ └── test │ └── scala │ └── typeclass │ ├── data │ ├── BarTest.scala │ ├── ConstTest.scala │ ├── EitherTest.scala │ ├── FirstTest.scala │ ├── FooTest.scala │ ├── IdTest.scala │ ├── LastTest.scala │ ├── MultTest.scala │ ├── NonEmptyListTest.scala │ ├── OptionTest.scala │ ├── ValidationTest.scala │ └── ZipStreamTest.scala │ └── instances │ ├── IntTest.scala │ ├── ListTest.scala │ └── StringTest.scala ├── docs ├── footer.png ├── index.html ├── remark-latest.min.js └── scalaprop.png ├── exercise └── src │ ├── main │ └── scala │ │ └── typeclass │ │ ├── Applicative.scala │ │ ├── Functor.scala │ │ ├── Monoid.scala │ │ ├── Semigroup.scala │ │ ├── data │ │ ├── Const.scala │ │ ├── First.scala │ │ ├── Last.scala │ │ ├── Mult.scala │ │ ├── NonEmptyList.scala │ │ └── Validation.scala │ │ ├── instances │ │ ├── Int.scala │ │ ├── List.scala │ │ ├── Option.scala │ │ └── String.scala │ │ └── syntax │ │ ├── applicative.scala │ │ ├── functor.scala │ │ ├── monoid.scala │ │ └── semigroup.scala │ └── test │ └── scala │ └── typeclass │ ├── data │ └── MultTest.scala │ └── instances │ ├── IntTest.scala │ ├── ListTest.scala │ └── StringTest.scala ├── project ├── build.properties └── plugins.sbt └── slides └── tut ├── footer.png ├── index.html ├── remark-latest.min.js └── scalaprop.png /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/.gitignore -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/.travis.yml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/README.md -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/Applicative.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/Applicative.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/Functor.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/Functor.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/Monad.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/Monad.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/Monoid.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/Monoid.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/Prelude.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/Prelude.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/Semigroup.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/Semigroup.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/Bar.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/Bar.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/Const.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/Const.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/Either.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/Either.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/First.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/First.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/Foo.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/Foo.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/Id.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/Id.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/Last.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/Last.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/Mult.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/Mult.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/NonEmptyList.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/NonEmptyList.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/Validation.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/Validation.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/data/ZipStream.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/data/ZipStream.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/instances/Int.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/instances/Int.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/instances/List.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/instances/List.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/instances/Long.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/instances/Long.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/instances/Option.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/instances/Option.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/instances/String.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/instances/String.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/syntax/applicative.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/syntax/applicative.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/syntax/functor.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/syntax/functor.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/syntax/monad.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/syntax/monad.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/syntax/monoid.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/syntax/monoid.scala -------------------------------------------------------------------------------- /answer/src/main/scala/typeclass/syntax/semigroup.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/main/scala/typeclass/syntax/semigroup.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/BarTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/BarTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/ConstTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/ConstTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/EitherTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/EitherTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/FirstTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/FirstTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/FooTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/FooTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/IdTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/IdTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/LastTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/LastTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/MultTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/MultTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/NonEmptyListTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/NonEmptyListTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/OptionTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/OptionTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/ValidationTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/ValidationTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/data/ZipStreamTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/data/ZipStreamTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/instances/IntTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/instances/IntTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/instances/ListTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/instances/ListTest.scala -------------------------------------------------------------------------------- /answer/src/test/scala/typeclass/instances/StringTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/answer/src/test/scala/typeclass/instances/StringTest.scala -------------------------------------------------------------------------------- /docs/footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/docs/footer.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/docs/index.html -------------------------------------------------------------------------------- /docs/remark-latest.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/docs/remark-latest.min.js -------------------------------------------------------------------------------- /docs/scalaprop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/docs/scalaprop.png -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/Applicative.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/Applicative.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/Functor.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/Functor.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/Monoid.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/Monoid.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/Semigroup.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/Semigroup.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/data/Const.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/data/Const.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/data/First.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/data/First.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/data/Last.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/data/Last.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/data/Mult.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/data/Mult.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/data/NonEmptyList.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/data/NonEmptyList.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/data/Validation.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/data/Validation.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/instances/Int.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/instances/Int.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/instances/List.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/instances/List.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/instances/Option.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/instances/Option.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/instances/String.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/instances/String.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/syntax/applicative.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/syntax/applicative.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/syntax/functor.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/syntax/functor.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/syntax/monoid.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/syntax/monoid.scala -------------------------------------------------------------------------------- /exercise/src/main/scala/typeclass/syntax/semigroup.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/main/scala/typeclass/syntax/semigroup.scala -------------------------------------------------------------------------------- /exercise/src/test/scala/typeclass/data/MultTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/test/scala/typeclass/data/MultTest.scala -------------------------------------------------------------------------------- /exercise/src/test/scala/typeclass/instances/IntTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/test/scala/typeclass/instances/IntTest.scala -------------------------------------------------------------------------------- /exercise/src/test/scala/typeclass/instances/ListTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/test/scala/typeclass/instances/ListTest.scala -------------------------------------------------------------------------------- /exercise/src/test/scala/typeclass/instances/StringTest.scala: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/exercise/src/test/scala/typeclass/instances/StringTest.scala -------------------------------------------------------------------------------- /project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=0.13.13-RC2 -------------------------------------------------------------------------------- /project/plugins.sbt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/project/plugins.sbt -------------------------------------------------------------------------------- /slides/tut/footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/slides/tut/footer.png -------------------------------------------------------------------------------- /slides/tut/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/slides/tut/index.html -------------------------------------------------------------------------------- /slides/tut/remark-latest.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/slides/tut/remark-latest.min.js -------------------------------------------------------------------------------- /slides/tut/scalaprop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/julien-truffaut/Typeclass/HEAD/slides/tut/scalaprop.png --------------------------------------------------------------------------------