++ed by:
ROMANF

1 PAUSE user(s)
1 non-PAUSE user(s).

Matt S Trout
and 1 contributors

NAME

Data::Stream - capability based stream model

CAPABILITIES

  Common: (Next Reset Peek First Exhausted)

  Next:
    $stream->next

  Reset:
    $stream->reset

  Peek: (Next)
    $stream->peek # defaulted

  First: (Reset, Next)
    $stream->first # defaulted

  Exhausted:
    $stream->exhausted

  Exhausted::Peek: (Exhausted)
    $sream->exhausted # defaulted

  Ready: (Next)
    $stream->ready
    $stream->next_if_ready # defaulted

  MultiNext: (Next)
    $stream->next(Int $how_many); # defaulted

DISCUSSION AREAS

Can we consider certain things universal? Should peek always be permitted even though it can potentially retain a reference to a large/contended resource?

What are sensible capabilities for e.g. a socket stream?

Seeking, skipping ...

Composition of potentially inefficient defaults?

MultiNext may interfere with simple wrappers for next - can we deal with that somehow? (multi+around?)