Re: A broken brand?
Sandro Magi <[email protected]>
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <[email protected]> |
David Wagner wrote: > Sandro writes: >> Unless I'm mistaken, this is a problem for sealers, which have many uses >> that cross machine boundaries. >> > > I'm ignorant about distributed systems, so perhaps I'm talking > nonsense, but I don't quite follow this comment yet. In a distributed > system, transparent forwarders/proxies have to be implemented as part > of the TCB (not at the application layer), and they have to have the > ability to "forge" types (i.e., to pretend to be of any desired type). > So I don't see why type-checking would prevent using these objects in > a distributed system. We have a disagreement on the fundamental assumption: I don't accept transparent interposition/forwarders are necessary, or even desirable. It sees significant use in object-oriented systems, but not much use in functional programming. By adding transparent forwarding, you lose "sitedness" properties, which I think are important for reasoning about local vs. remote systems. See for instance "fswebtoolkit" [1], which distinguishes client and server computations using the monads in F# (called 'computation expressions'). Client computations are compiled to Javascript for the browser, while server computations execute server-side in the .NET VM. This site distinction is enforced at compile-time, so the compiler ensures that server and client computations cannot be mixed in the same expression, except via message sends. I think there's a great deal of value here, which interferes with properties provided by transparent forwarding. Sandro [1] http://tomasp.net/fswebtools/files/*fswebtoolkit*-ml.pdf