Packages

final case class Weave[F[_], Dom[_], Cod[_], A](algebraName: String, domain: List[List[Advice[Eval, Dom]]], codomain: Aux[F, Cod, A]) extends Product with Serializable

An Aspect.Weave represents a reified cross-cutting concern for a single method of an algebra. It can be applied to all method arguments, result, or both. Its behaviour is driven by type classes.

F

The underlying algebra carrier type which is the result of forwarding the method call.

Dom

Type class / constraint that should exist for all parameter types except implicits (domain).

Cod

Type class / constraint that should exist for the return type of the method (codomain).

A

Return type of the method.

domain

Aspect.Advice for all arguments except implicits. Target in Eval to capture by-name arguments.

codomain

Aspect.Advice for the result of the method. Target in F - the underlying algebra carrier.

Source
Aspect.scala
See also

Weave.Domain, Weave.Codomain and Weave.Function for convenient type aliases.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Weave
  2. Serializable
  3. Product
  4. Equals
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Weave(algebraName: String, domain: List[List[Advice[Eval, Dom]]], codomain: Aux[F, Cod, A])

    domain

    Aspect.Advice for all arguments except implicits. Target in Eval to capture by-name arguments.

    codomain

    Aspect.Advice for the result of the method. Target in F - the underlying algebra carrier.

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val algebraName: String
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
  7. val codomain: Aux[F, Cod, A]
  8. val domain: List[List[Advice[Eval, Dom]]]
  9. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  10. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  11. def instrumentation: Instrumentation[F, A]

    Convert this Weave to an Instrumentation, throwing away information about the domain.

  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  16. def productElementNames: Iterator[String]
    Definition Classes
    Product
  17. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  18. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  19. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  20. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated @Deprecated
    Deprecated

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped