|
Scala example source code file (Category.scala)
The Category.scala Scala example source codepackage scalaz //// /** * [[scalaz.Compose]] with identity. * * @see [[scalaz.Category.CategoryLaw]] */ //// trait Category[=>:[_, _]] extends Compose[=>:] { self => //// // TODO GeneralizedCategory, GeneralizedFunctor, et al, from Scalaz6 ? /** The left and right identity over `compose`. */ def id[A]: A =>: A /** `monoid`, but universally quantified. */ def empty: PlusEmpty[λ[α => α =>: α]] = new PlusEmpty[λ[α => α =>: α]] with ComposePlus { def empty[A] = id } /** The endomorphism monoid, where `zero`=`id` and * `append`=`compose`. */ def monoid[A]: Monoid[A =>: A] = new Monoid[A =>: A] with ComposeSemigroup[A] { def zero = id } trait CategoryLaw extends ComposeLaw { /** `_ <<< id` is vacuous. */ def leftIdentity[A, B](ab: (A =>: B))(implicit E: Equal[A =>: B]): Boolean = { val ab1 = compose(ab, id[A]) E.equal(ab, ab1) } /** `id <<< _` is vacuous. */ def rightIdentity[A, B](ab: (A =>: B))(implicit E: Equal[A =>: B]): Boolean = { val ab1 = compose(id[B], ab) E.equal(ab, ab1) } } def categoryLaw = new CategoryLaw {} //// val categorySyntax = new scalaz.syntax.CategorySyntax[=>:] { def F = Category.this } } object Category { @inline def apply[F[_, _]](implicit F: Category[F]): Category[F] = F //// //// } Other Scala examples (source code examples)Here is a short list of links related to this Scala Category.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.