Showing posts with label streams. Show all posts
Showing posts with label streams. Show all posts

2012-08-01

Python's generators and coroutines

2.16: adda/cstr/1st-class functions/
generators and coroutines:

. a generator in python
is a function identified by it's body:
it's calling yield instead of return .
. the easier way to view this
in a typed lang, like adda,
is to set the return type as a stream ?
. streams are conceptually like files
so they should work like files;
eg, to restart sequence do an
f.open(name of generator instead of file) .
. streams are like sequences, in that
seek(n) can be done by restarting the generator
and asking for an nth item .
. the coroutine in python is like a generator;
but instead of streaming output,
it has a streaming input:
f`open mycoroutine(init);
f`put (some data to send to it) .
. it could do put's to output, and get's to input;
being both a generator and a coroutine .

2012-03-31

python coroutines and generators

3.26: adda/type/streams/python coroutines and generators:
. after seeing python's coroutines and generators,
I was noticing that its function's signatures weren't explicit;
the syntax for generating coroutine should be:
f(x.stream.t1).stream.t2 .
. this tells you that when you pass f a file, x, of type t1,
it keeps reading units until you close x,
and it expects to be assigned to a stream,
which it continues to write to until f's input is closed .
y,x: stream; y`= f(x);
-- this causes f to function its stream .
. readers wait if x`item = eof
until there's a value to read .