[kepler-dev] Generating simple actor documentation using Javadoc

Bertram Ludaescher ludaesch at sdsc.edu
Tue Aug 10 15:51:37 PDT 2004


>>>>> "SAN" == Stephen Andrew Neuendorffer <neuendor at eecs.berkeley.edu> writes:
SAN> 
>> 
>> btw: in terms of inferred vs. declared, there is one point though, now
>> that I think about it:
>> 
>> A noticed that several PT actors have a type e.g., of the form
>> actorX :: {unknown} -> unknown                     (1)
SAN> 
SAN> They don't have this type...  

That's good to know. The naive user, when looking at the actor ports
in Vergil would however observe this type when moving the mouse over
the port. When connecting up ports (thus providing additional type
constraints) and hitting "run" (actually we only need prefire I
guess), a more specific type is inferred by the system.

But the type {alpha} -> alpha isn't easily visible to the user

SAN> They should implement the correct type 
SAN> constraints
SAN> for {alpha} -> alpha... I agree it is awkward that such constraints are 
SAN> specified in a
SAN> different way, but they must declare it.  I have long wanted a more 
SAN> declarative way
SAN> of specifying such things: essentially expression language syntax for type 
SAN> constraints.

right!

SAN> Note that quite alot of information is specified operationally in actors,
SAN> rather than declaratively.  

yep -- I guess there might be a need for both (in some apps)

SAN> E.g. type constraints.  Choices added through 
SAN> the addChoice
SAN> mechanism.  Default parameter values.  Reactions to changed attributes.
SAN> Such mechanisms are simple to build in the short term, but really bog down in
SAN> the long term...
SAN> 
>> A user-defined declaration could go a step further (again, say similar
>> to Haskell) and say
>> actorX :: {alpha} -> alpha                         (4)
>> || isNumeric(alpha)
SAN> 
SAN> Yes...  This is one important role of type classes in Haskell. 

yep -- there is a special syntax for it: Num alpha => [alpha] -> alpha

SAN>  Ptolemy
SAN> has a limited form a type classes, in that you can say input <= numeric, to
SAN> guarantee that the actor takes any numeric type, or input <= array{general}
SAN> to guarantee that an actor takes any array type.  The same issues come up in
SAN> object oriented languages when specifying generic, templatized classes.... 
SAN> it's
SAN> essentially equivalent to "This is a class that is a template on type T, 
SAN> where T
SAN> must have a foo method that returns T and a bar method that takes int".
SAN> 
SAN> Going beyond this is I think an important research issue.  Unfortunately, I 
SAN> think
SAN> we've reached the practical limits of the type system as we've formulated 
SAN> it currently.

yeah -- it's very powerful as it is already! And very flexible!

SAN> I think the point is that all of these 'semantic types' should be declared, 
SAN> checked and then
SAN> visible in the javadoc.  This doesn't necessarily mean we need more javadoc 
SAN> tags,
SAN> just that we need to better extract the information that Ptolemy is already 
SAN> using.
SAN> 
SAN> Writing javadoc interpreters is not hard... It could instantiate an actor 
SAN> and then start
SAN> extracting the required information from it.
SAN> 
SAN> Steve



More information about the Kepler-dev mailing list