Talk:Agents in SCOOP

Revision as of 23:02, 21 March 2013 by Colin-adams (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

I use the first parameter in ROUTINE as a documentation hint, to specify the contract an agent is expected to fulfill.

That is, I declare the callback agent as having type ROUTINE [MY_CLASS, TUPLE [....]]

Then in MY_CLASS I declare a single deferred routine that conforms to the expected signature of the callback. This routine is then equipped with contracts.

This serves as a hint to the user as to what the requirements of the callback actually are. If the user follows the hint by inheriting from MY_CLASS to implement the call back, then the contract is actually checked at runtime, and so provides an early warning of what the bug is.

So I find it usefull.

--Colin-adams 07:37, 21 March 2013 (UTC)

Alexander Kogtenkov 07:45, 21 March 2013 (UTC): Could you provide an example? Isn't it too restrictive to require an agent to be based on a specific target?

It isn't restrictive, because a deferred class with a single deferred routine can be inherited as many times as you need, renaming the routine.

I don't have an example that I can post publicly, but I'll send one by email. --Colin-adams 07:02, 22 March 2013 (UTC)