On Thu, 25 Nov 2004, Jules Bean wrote:
>
> On 25 Nov 2004, at 10:07, [EMAIL PROTECTED] wrote:
> >
> > Thus an element u of (IO a) is affine central if for all v::IO b and
> > w::IO c,
> >
> >   do { x <- u; v } = v                                (affine)
>
> If x does not occur in v, I presume?
>

Yes, and similarly for centrality:

  do { x <- u; y <-v; w } = do { y <- v; x <- u; w }  (central)

applies only when x not free in v and y not free in u.

This means that ACIO computations can be rearranged and discarded, but
only within the limits of dataflow dependencies between the values.

Working out these dependencies are the job of a compiler, exactly as with
standard value declarations in Haskell.  I think it should even be
possible to have mutually recursive ACIO declarations, provided non-strict
constructors intervene.

Ian
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to