Is it a requirement that RESTful interactions occur between physically separate clients and servers? i.e. does the interaction need to involve the network stack in some way? Is there any benefit to employing an HTTP-like "calling convention" between the various components of an application?
It seems to me that the benefits of REST, such as they are, are almost as applicable to communication between components of the same application as to communication between physically separate clients and servers, and that REST's constraints and guiding principles can be satisfied without the network stack being involved. (I'm not suggesting that it's a good idea for every function call to "look like HTTP", but for certain function calls or interactions, it might make sense for the interaction to be HTTP-like.)
For example, in a web application it might be useful to access ("internal") user information via URLs like http://api.local/user/34
and an "HTTP client" that routes and dispatches requests internally, rather than going through a standard HTTP routing and dispatch process. Instead of providing a conventional library and associated documentation, the developer of the user component would provide URL endpoints (resources), which could be manipulated with the standard HTTP verbs. Since developers are already familiar with HTTP, less documentation would be required, and there would be more consistency and uniformity across components.
(I think that thinking about REST in this way also helps clarify the difference between REST and RPC mechanisms like SOAP--there's no reason to ever use SOAP for "internal" calls, but the understood behaviour and semantics of REST may make it useful for "internal" calls in some situations. And of course if you're using REST for internal calls (REST Level 0?), it's trivial to convert such interactions into external calls if the need arises.)