|
Scala example source code file (Associative.scala)
The Associative.scala Scala example source codepackage scalaz //// /** * */ //// trait Associative[=>:[_, _]] { self => //// import Isomorphism.<=> def reassociateLeft[A, B, C](f: A =>: (B =>: C)): (A =>: B) =>: C def reassociateRight[A, B, C](f: (A =>: B) =>: C): A =>: (B =>: C) def reassociateIso[A, B, C]: ((A =>: B) =>: C) <=> (A =>: (B =>: C)) = new (((A =>: B) =>: C) <=> (A =>: (B =>: C))) { def from = reassociateLeft def to = reassociateRight } trait AssociativeLaw { /** Reassociating left and then right is a no-op. */ def leftRight[A, B, C](fa: A =>: (B =>: C))(implicit FR: Equal[A =>: (B =>: C)]): Boolean = FR.equal(reassociateRight(reassociateLeft(fa)), fa) /** Reassociating right and then left is a no-op. */ def rightLeft[A, B, C](fa: (A =>: B) =>: C)(implicit FL: Equal[(A =>: B) =>: C]): Boolean = FL.equal(reassociateLeft(reassociateRight(fa)), fa) } def associativeLaw = new AssociativeLaw {} //// val associativeSyntax = new scalaz.syntax.AssociativeSyntax[=>:] { def F = Associative.this } } object Associative { @inline def apply[F[_, _]](implicit F: Associative[F]): Associative[F] = F //// //// } Other Scala examples (source code examples)Here is a short list of links related to this Scala Associative.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.