|
Scala example source code file (IndexedContsTTest.scala)
The IndexedContsTTest.scala Scala example source codepackage scalaz import org.scalacheck.{Arbitrary, Gen} import scalaz.scalacheck.ScalaCheckBinding._ import scalaz.scalacheck.ScalazProperties._ import scalaz.std.list._ import scalaz.std.string._ object IndexedContsTTest extends SpecLite { type ContTListString[A] = ContT[List, String, A] type ContTListStringInt = ContTListString[Int] def contTListStringGen[A](implicit A: Arbitrary[A]): Gen[ContTListString[A]] = Gen.frequency( (1, Functor[Gen].map(Gen.containerOf[List, String](Gen.alphaStr))(l => ContT(f => l))), (1, Functor[Gen].map(A.arbitrary)(ContT.point(_))), (1, Functor[Gen].map(A.arbitrary)(i => ContT(f => { val l = f(i) val (a, b) = l.splitAt((l.size + 1) % 3) a ::: List("foo") ::: b }))) ) implicit def contTListStringIntArb: Arbitrary[ContTListStringInt] = Arbitrary(contTListStringGen[Int]) implicit def contTListStringInt2Arb: Arbitrary[ContTListString[Int => Int]] = Arbitrary(contTListStringGen[Int => Int]) implicit def contTListStringIntEqual: Equal[ContTListStringInt] = new Equal[ContTListStringInt] { def equal(a: ContTListStringInt, b: ContTListStringInt): Boolean = { val f: Int => List[String] = _.toString.toList.map(_.toString) Equal[List[String]].equal(a(f), b(f)) } } checkAll(monadPlus.laws[ContTListString]) object instances { def functorRight[W[_]: Functor, M[_], R, O] = Functor[IndexedContsT[W, M, R, O, ?]] def functorLeft[W[_], M[_]: Functor, O, A] = Functor[IndexedContsT[W, M, ?, O, A]] def contravariant[W[_]: Functor, M[_]: Functor, R, A] = Contravariant[IndexedContsT[W, M, R, ?, A]] def bifunctor[W[_]: Functor, M[_]: Functor, O] = Bifunctor[IndexedContsT[W, M, ?, O, ?]] def bind[W[_]: Cobind, M[_], R] = Bind[ContsT[W, M, R, ?]] def monad[W[_]: Comonad, M[_], R] = Monad[ContsT[W, M, R, ?]] // checking absence of ambiguity def functor[W[_]: Comonad, M[_], R] = Functor[ContsT[W, M, R, ?]] def functor[W[_]: Cobind, M[_], R] = Functor[ContsT[W, M, R, ?]] def bind[W[_]: Comonad, M[_], R] = Bind[ContsT[W, M, R, ?]] } } Other Scala examples (source code examples)Here is a short list of links related to this Scala IndexedContsTTest.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.