Packages

trait Aspect[Alg[_[_]], Dom[_], Cod[_]] extends Instrument[Alg]

Type class supporting Aspect-Oriented Programming (AOP) for a tagless final algebra. The behaviour of this aspect is defined by two type classes (or constraints) - one for the domain (arguments) and one for the codomain (result) of each method in the algebra.

Note: This feature is experimental, API is likely to change.

Alg

The algebra to which this aspect applies.

Dom

Type class / constraint that should exist for all parameter types of each algebra methods (domain).

Cod

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

Source
Aspect.scala
See also

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

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Aspect
  2. Instrument
  3. FunctorK
  4. InvariantK
  5. Serializable
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def mapK[F[_], G[_]](af: Alg[F])(fk: ~>[F, G]): Alg[G]
    Definition Classes
    FunctorK
  2. abstract def weave[F[_]](af: Alg[F]): Alg[[δ$0$]Weave[F, Dom, Cod, δ$0$]]

Concrete 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. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  9. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  10. def imapK[F[_], G[_]](af: Alg[F])(fk: ~>[F, G])(gk: ~>[G, F]): Alg[G]
    Definition Classes
    FunctorKInvariantK
  11. def instrument[F[_]](af: Alg[F]): Alg[[β$1$]Instrumentation[F, β$1$]]
    Definition Classes
    AspectInstrument
  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. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  17. def toString(): String
    Definition Classes
    AnyRef → Any
  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 Instrument[Alg]

Inherited from FunctorK[Alg]

Inherited from InvariantK[Alg]

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped