|
Scala example source code file (TupleTest.scala)
The TupleTest.scala Scala example source codepackage scalaz package std import collection.immutable.IndexedSeq import std.AllInstances._ import scalaz.scalacheck.ScalazProperties._ import scalaz.scalacheck.ScalazArbitrary._ object TupleTest extends SpecLite { type A = Int type B = Int type C = Int type D = Int type E = Int type F = Int type G = Int type H = Int type K = Int type V = Int type X = Int checkAll("Tuple1", order.laws[(A)]) checkAll("Tuple2", order.laws[(A, B)]) checkAll("Tuple3", order.laws[(A, B, C)]) checkAll("Tuple4", order.laws[(A, B, C, D)]) checkAll("Tuple5", order.laws[(A, B, C, D, E)]) checkAll("Tuple6", order.laws[(A, B, C, D, E, F)]) checkAll("Tuple7", order.laws[(A, B, C, D, E, F, G)]) checkAll("Tuple8", order.laws[(A, B, C, D, E, F, G, H)]) checkAll("Tuple1", monoid.laws[(A)]) checkAll("Tuple2", monoid.laws[(A, B)]) checkAll("Tuple3", monoid.laws[(A, B, C)]) checkAll("Tuple4", monoid.laws[(A, B, C, D)]) checkAll("Tuple5", monoid.laws[(A, B, C, D, E)]) checkAll("Tuple6", monoid.laws[(A, B, C, D, E, F)]) checkAll("Tuple7", monoid.laws[(A, B, C, D, E, F, G)]) checkAll("Tuple8", monoid.laws[(A, B, C, D, E, F, G, H)]) checkAll("Tuple2", bindRec.laws[(B, ?)]) checkAll("Tuple3", bindRec.laws[(B, C, ?)]) checkAll("Tuple4", bindRec.laws[(B, C, D, ?)]) checkAll("Tuple5", bindRec.laws[(B, C, D, E, ?)]) checkAll("Tuple6", bindRec.laws[(B, C, D, E, F, ?)]) checkAll("Tuple7", bindRec.laws[(B, C, D, E, F, G, ?)]) checkAll("Tuple8", bindRec.laws[(B, C, D, E, F, G, H, ?)]) checkAll("Tuple1", monad.laws[Tuple1]) checkAll("Tuple2", monad.laws[(B, ?)]) checkAll("Tuple3", monad.laws[(B, C, ?)]) checkAll("Tuple4", monad.laws[(B, C, D, ?)]) checkAll("Tuple5", monad.laws[(B, C, D, E, ?)]) checkAll("Tuple6", monad.laws[(B, C, D, E, F, ?)]) checkAll("Tuple7", monad.laws[(B, C, D, E, F, G, ?)]) checkAll("Tuple8", monad.laws[(B, C, D, E, F, G, H, ?)]) checkAll("Tuple1", comonad.laws[Tuple1]) checkAll("Tuple2", comonad.laws[(Int, ?)]) checkAll("Tuple2", associative.laws[Tuple2]) "syntax" should { import std.tuple.tupleSyntax._ "mapElements" in { (1, 2).mapElements(_1 = 2 *) must_===((2, 2)) } "toIndexedSeq" in { val as: IndexedSeq[Int] = (1, 2).toIndexedSeq as.toList must_===(List(1, 2)) } "fold" in { (1, 2).fold(_ + _) must_===(3) } } object instances { object tuple1 { def show[A: Show] = Show[Tuple1[A]] def equal[A: Equal] = Equal[Tuple1[A]] def order[A: Order] = Order[Tuple1[A]] def semigroup[A: Semigroup] = Semigroup[Tuple1[A]] def monoid[A: Monoid] = Monoid[Tuple1[A]] def monad = Monad[Tuple1] def comonad = Comonad[Tuple1] def cozip = Cozip[Tuple1] // checking absence of ambiguity def equal[A: Order] = Equal[Tuple1[A]] def semigroup[A: Monoid] = Semigroup[Tuple1[A]] } object tuple2 { def show[A: Show, B: Show] = Show[(A, B)] def equal[A: Equal, B: Equal] = Equal[(A, B)] def order[A: Order, B: Order] = Order[(A, B)] def semigroup[A: Semigroup, B: Semigroup] = Semigroup[(A, B)] def monoid[A: Monoid, B: Monoid] = Monoid[(A, B)] def associative = Associative[Tuple2] def bitraverse = Bitraverse[Tuple2] def functor = Functor[(B, ?)] def bindRec[A: Semigroup] = BindRec[(A, ?)] def monad[A: Monoid] = Monad[(A, ?)] def cozip = Cozip[(A, ?)] // checking absence of ambiguity def equal[A: Order, B: Order] = Equal[(A, B)] def semigroup[A: Monoid, B: Monoid] = Semigroup[(A, B)] def functor[A: Monoid] = Functor[(A, ?)] } object tuple3 { def show[A: Show, B: Show, C: Show] = Show[(A, B, C)] def equal[A: Equal, B: Equal, C: Equal] = Equal[(A, B, C)] def order[A: Order, B: Order, C: Order] = Order[(A, B, C)] def semigroup[A: Semigroup, B: Semigroup, C: Semigroup] = Semigroup[(A, B, C)] def monoid[A: Monoid, B: Monoid, C: Monoid] = Monoid[(A, B, C)] } } } Other Scala examples (source code examples)Here is a short list of links related to this Scala TupleTest.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.