There are several values in the module source included to illustrate how to build taps. Functions nop1 and nop2 are equivalent and do nothing while peek reveals the geodesic parameter as it crosses the interface. Finally nudge slightly advances that parameter as a ray passes. It should be clear how to observe and intervene in returned values as well. It is also possible to terminate and duplicate messages.
val nz : (int -> int -> float) -> int list -> (int -> Zone.fray Zone.nAcc -> unit) * (int -> Zone.fray Zone.nAcc)Routine nz takes an argument which is a function d of two global vertex numbers; d returns the distance2 between the vertices. nz returns a value suitable as the first arg of morphgen.
The current program that implements taps is the Glue module. Routine elim there has been be taught to insert taps according to a tapl tap list which is a new argument to morphgen.
The program is written assuming the tap list is short. Sorting the list and exploiting that in elim would overcome this limitation.
This routine may be useful in this sort of configuration.