final class Pull[+F[_], +O, +R] extends AnyVal
A p: Pull[F,O,R] reads values from one or more streams, returns a
result of type R, and produces a Stream[F,O] when calling p.stream.
Any resources acquired by p are freed following the call to stream.
Laws:
Pull forms a monad in R with pure and flatMap:
pure >=> f == ff >=> pure == f(f >=> g) >=> h == f >=> (g >=> h)wheref >=> gis defined asa => a flatMap f flatMap g
raiseError is caught by handleErrorWith:
handleErrorWith(raiseError(e))(f) == f(e)
- Source
- Pull.scala
- Alphabetic
- By Inheritance
- Pull
- AnyVal
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- Any
-
final
def
##(): Int
- Definition Classes
- Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- Any
-
def
>>[F2[x] >: F[x], O2 >: O, R2](p2: ⇒ Pull[F2, O2, R2]): Pull[F2, O2, R2]
Alias for
flatMap(_ => p2). -
def
as[R2](r2: R2): Pull[F, O, R2]
Alias for
_.map(_ => o2). -
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
attempt: Pull[F, O, Either[Throwable, R]]
Returns a pull with the result wrapped in
Right, or an error wrapped inLeftif the pull has failed. -
def
covary[F2[x] >: F[x]]: Pull[F2, O, R]
Lifts this pull to the specified effect type.
-
def
covaryAll[F2[x] >: F[x], O2 >: O, R2 >: R]: Pull[F2, O2, R2]
Lifts this pull to the specified effect type, output type, and resource type.
-
def
covaryOutput[O2 >: O]: Pull[F, O2, R]
Lifts this pull to the specified output type.
-
def
covaryResource[R2 >: R]: Pull[F, O, R2]
Lifts this pull to the specified resource type.
-
def
flatMap[F2[x] >: F[x], O2 >: O, R2](f: (R) ⇒ Pull[F2, O2, R2]): Pull[F2, O2, R2]
Applies the resource of this pull to
fand returns the result. -
def
getClass(): Class[_ <: AnyVal]
- Definition Classes
- AnyVal → Any
-
def
handleErrorWith[F2[x] >: F[x], O2 >: O, R2 >: R](h: (Throwable) ⇒ Pull[F2, O2, R2]): Pull[F2, O2, R2]
If
thisterminates withPull.raiseError(e), invokeh(e). -
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
map[R2](f: (R) ⇒ R2): Pull[F, O, R2]
Applies the resource of this pull to
fand returns the result in a newPull. -
def
mapOutput[O2](f: (O) ⇒ O2): Pull[F, O2, R]
Applies the outputs of this pull to
fand returns the result in a newPull. -
def
onComplete[F2[x] >: F[x], O2 >: O, R2 >: R](p2: ⇒ Pull[F2, O2, R2]): Pull[F2, O2, R2]
Run
p2afterthis, regardless of errors duringthis, then reraise any errors encountered duringthis. -
def
stream(implicit ev: <:<[R, Unit]): Stream[F, O]
Interpret this
Pullto produce aStream, introducing a scope.Interpret this
Pullto produce aStream, introducing a scope.May only be called on pulls which return a
Unitresult type. Usep.void.streamto explicitly ignore the result type of the pull. -
def
streamNoScope(implicit ev: <:<[R, Unit]): Stream[F, O]
Interpret this
Pullto produce aStreamwithout introducing a scope.Interpret this
Pullto produce aStreamwithout introducing a scope.Only use this if you know a scope is not needed. Scope introduction is generally harmless and the risk of not introducing a scope is a memory leak in streams that otherwise would execute in constant memory.
May only be called on pulls which return a
Unitresult type. Usep.void.streamto explicitly ignore the result type of the pull. -
def
toString(): String
- Definition Classes
- Any
-
def
void: Pull[F, O, Unit]
Discards the result type of this pull.