[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: multiple values and T



    ...
    End of disccusion from the Relases Notes.
    
    What disturbs me is the way that it does not seem to be as general as it
    could be.  What I would like to propose is the ability to splice in return
    values.  Here is an example:
    
       ((lambda (a b c q x y) ...)
        (return 1 2 3) 4 (return 5 6)).
    
    It is possible that this capability is exactly what T Version 3.0 does.
    However, there were no examples of this type so I believe this has been
    overlooked.
    
No, T does not do this (by design).  The problem is that it's not always
obvious what the bindings are.  For example, replace the above two
occurrences of RETURN with calls to unknown procedures:

       ((lambda (a b c q x y) ...)
        (f) 4 (g))

The problem with this is that one cannot tell, looking at this code alone, 
which bound variable 4 is bound to.  Indeed, different invocations of this
may induce different bindings, depending on the bindings of f and g!  This
seems to us to violate one's notion of referential transparency.

    Paul Hudak
    David Kranz
    Richard Kelsey
-------