module type EXPOSURE = sig end
EXPOSURE
must be given
as a parameter to the SWARMMAKER
functor in order to create a
SWARM
. The ultimate residents of the Swarm object will have
projections, markers, etc. of the types defined in the exposure.type projection
int
is often used.type marker
type matchinghalf
matching
, which is returned by the
matchings
function, both below. A matchinghalf
is used to
identify a possible match between a pair of markers, on a specific
member of the pair. This is meaningful since two markers can have
multiple matchings.type submarker
type splitmessage
type joinmessage
type matching = matchinghalf * matchinghalf
matchinghalf
on each member of a pair of markers fully
identifies a matching
. Note that the order is significant.type bindhalf
EXPOSURE
module type, but I
don't know where else to place them.
ANOTHER FIXME: Right now, the bindhalf is defined in a very unsafe
manner, as it serves two purposes simultaneously: it is used as a
holder of a binding (useful as memory upon release, for instance)
and also as a holder for resident-specific information (useful to
have access to the fragment of a ligand for instance). Change
this in the future by introducing a object which delegates to two
bindhalves, to be used as a holder.
val matchings : marker * marker -> matching list
EXPOSURE
module is to calculate the
matchings between a pair of makers, which is what this function
does. If the return list is empty, the markers do not match; a
single matching indicates an unambiguous match; multiple matchings
an ambiguous match, as in the case of a regular expression
matching multiple substrings of a string.val affinity : matching -> int