Packages

abstract class Visitor[F[_], A, R] extends (Iterant[F, A]) => R

Implements the Visitor Pattern for interpreting the Iterant data structure.

This can be used as an alternative to pattern matching and is used in the implementation of Iterant for performance reasons.

WARN: this being a class instead of a recursive function, it means that it often has to keep "shared state". Keeping shared state is great for performance, but breaks referential transparency, so use with care.

Source
Iterant.scala
Linear Supertypes
(Iterant[F, A]) => R, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Visitor
  2. Function1
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Visitor()

Abstract Value Members

  1. abstract def fail(e: Throwable): R

    Processes unhandled errors.

  2. abstract def visit(ref: Halt[F, A]): R

    Processes Iterant.Halt.

  3. abstract def visit(ref: Last[F, A]): R

    Processes Iterant.Last.

  4. abstract def visit[S](ref: Scope[F, S, A]): R

    Processes Iterant.Scope.

  5. abstract def visit(ref: Concat[F, A]): R

    Processes Iterant.Concat.

  6. abstract def visit(ref: Suspend[F, A]): R

    Processes Iterant.Suspend.

  7. abstract def visit(ref: NextCursor[F, A]): R

    Processes Iterant.NextCursor.

  8. abstract def visit(ref: NextBatch[F, A]): R

    Processes Iterant.NextBatch.

  9. abstract def visit(ref: Next[F, A]): R

    Processes Iterant.Next.

Concrete Value Members

  1. def andThen[A](g: (R) => A): (Iterant[F, A]) => A
    Definition Classes
    Function1
    Annotations
    @unspecialized()
  2. def apply(fa: Iterant[F, A]): R
    Definition Classes
    Visitor → Function1
  3. def compose[A](g: (A) => Iterant[F, A]): (A) => R
    Definition Classes
    Function1
    Annotations
    @unspecialized()
  4. def toString(): String
    Definition Classes
    Function1 → AnyRef → Any