|
Scala example source code file (Comonad.scala)
The Comonad.scala Scala example source code
package scalaz
////
/**
*
*/
////
trait Comonad[F[_]] extends Cobind[F] { self =>
////
/** Also known as `extract` / `copure` */
def copoint[A](p: F[A]): A
// derived functions
/** alias for `copoint` */
final def copure[A](p: F[A]): A = copoint(p)
trait ComonadLaws extends CobindLaws {
def cobindLeftIdentity[A](fa: F[A])(implicit F: Equal[F[A]]): Boolean =
F.equal(cobind(fa)(copoint), fa)
def cobindRightIdentity[A, B](fa: F[A], f: F[A] => B)(implicit F: Equal[B]): Boolean =
F.equal(copoint(cobind(fa)(f)), f(fa))
}
def comonadLaw = new ComonadLaws {}
////
val comonadSyntax = new scalaz.syntax.ComonadSyntax[F] { def F = Comonad.this }
}
object Comonad {
@inline def apply[F[_]](implicit F: Comonad[F]): Comonad[F] = F
////
////
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala Comonad.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.