abstract
class
Visitor[F[_], A, R] extends (Iterant[F, A]) ⇒ R
Instance Constructors
-
new
Visitor()
Abstract Value Members
-
abstract
def
fail(e: Throwable): R
-
abstract
def
visit(ref: Halt[F, A]): R
-
abstract
def
visit(ref: Last[F, A]): R
-
abstract
def
visit[S](ref: Scope[F, S, A]): R
-
abstract
def
visit(ref: Concat[F, A]): R
-
abstract
def
visit(ref: Suspend[F, A]): R
-
abstract
def
visit(ref: NextCursor[F, A]): R
-
abstract
def
visit(ref: NextBatch[F, A]): R
-
abstract
def
visit(ref: Next[F, A]): R
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: Any): Boolean
-
def
andThen[A](g: (R) ⇒ A): (Iterant[F, A]) ⇒ A
-
def
apply(fa: Iterant[F, A]): R
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
def
compose[A](g: (A) ⇒ Iterant[F, A]): (A) ⇒ R
-
-
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
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.