|
Scala example source code file (OptionTTest.scala)
The OptionTTest.scala Scala example source codepackage scalaz import scalaz.scalacheck.ScalazProperties._ import scalaz.scalacheck.ScalazArbitrary._ import std.AllInstances._ import org.scalacheck.Prop.forAll object OptionTTest extends SpecLite { type OptionTList[A] = OptionT[List, A] type OptionTOption[A] = OptionT[Option, A] type IntOr[A] = Int \/ A type OptionTEither[A] = OptionT[IntOr, A] checkAll(equal.laws[OptionTList[Int]]) checkAll(bindRec.laws[OptionTList]) checkAll(monadPlus.laws[OptionTList]) checkAll(traverse.laws[OptionTList]) checkAll(monadError.laws[OptionTEither, Int]) "show" ! forAll { a: OptionTList[Int] => Show[OptionTList[Int]].show(a) must_=== Show[List[Option[Int]]].show(a.run) } "optionT" ! forAll { ass: List[Option[Int]] => OptionT.optionT(ass).run == ass } "listT" ! forAll { a: OptionTList[Int] => a.toListT.run must_=== a.run.map(_.toList)} object instances { def functor[F[_] : Functor] = Functor[OptionT[F, ?]] def bindRec[F[_] : Monad: BindRec] = BindRec[OptionT[F, ?]] def monad[F[_] : Monad] = MonadPlus[OptionT[F, ?]] def monadError[F[_], E](implicit F: MonadError[F, E]) = MonadError[OptionT[F, ?], E] def foldable[F[_] : Foldable] = Foldable[OptionT[F, ?]] def traverse[F[_] : Traverse] = Traverse[OptionT[F, ?]] // checking absence of ambiguity def functor[F[_] : Monad] = Functor[OptionT[F, ?]] def functor[F[_] : Monad: BindRec] = Functor[OptionT[F, ?]] def functor[F[_] : Monad : Traverse] = Functor[OptionT[F, ?]] def functor[F[_], E](implicit F1: MonadError[F, E], F2: Traverse[F]) = Functor[OptionT[F, ?]] def bind[F[_] : Monad: BindRec] = Bind[OptionT[F, ?]] def apply[F[_] : Monad] = Apply[OptionT[F, ?]] def foldable[F[_] : Traverse] = Foldable[OptionT[F, ?]] } } Other Scala examples (source code examples)Here is a short list of links related to this Scala OptionTTest.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.