Hugh Perkins wrote: > Now, arguably the fact that we are pattern matching on the receiver at least > means we dont do anything with the invalid data sent, but this is not rocket > science: the standard technique to ensure decent compile time validation in > rpc-type things is to use an interface. > > The interface defines the method names and parameters that you can send > across. Both the receiver and the sender have access to the interface > definition, and it is trivial to check it at compile time. > > (Caveat: havent looked enough into Erlang to know if there is a good reason > for not using an interface?)
Remember that Erlang is an untyped language and that you are allowed to send any kind of data. However, there is more to consider here: A certain amount of dynamism wrt the message content (high level protocol) is necessary for systems for which Erlang was designed, namely large distributed control systems with minimum down-times. For large distributed installations it is a matter of practicality to be able to upgrade one component w/o needing to recompile (and then re-start) all the other components that it communicates with -- for systems with expected down-times of 3 Minutes per year it is a matter of being able to meet the specifications. You'll have a hard time finding high-availability or large control systems which use an IDL approach for communication. Cheers Ben _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe