module type EXPOSURE = sig endEXPOSURE 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 listEXPOSURE 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