# The state of the art for Arrow specs (clarifications and
additions)

**Brian Rice**
water@tscnet.com

*Fri, 29 Oct 1999 22:32:05 -0700*

At 07:09 AM 10/30/99 +0200, Laurent Martelli wrote:
>>>>>>* "Brian" == Brian Rice <water@tscnet.com> writes:
*>*
*>* Brian> (3) Treating any graph as a function and applying it to an
*>* Brian> arrow. This relates to the representation of a function as a
*>* Brian> graph, which involves drawing arrows from domain-value to
*>* Brian> range-value. For an actual function, there is only one arrow
*>* Brian> in the graph representation whose input (car) is unique to
*>* Brian> that arrow, ensuring that a function returns at most one
*>* Brian> value.
*>*
*>*It looks like the only objects in the system are arrows and set of
*>*arrows. How will you tell a function from a graph, if any graph is a
*>*function, and any function is a graph ? It bothers me because if you
*>*test two objects for equality, and one is supposed to be a graph, and
*>*the ohter one is supposed to be a function, the test may return true
*>*despite the two objects are supposed to be different things.
*
Good question. It turns out that I'm using two different connotations with
the word function, which is unfortunate. First, there is the
representation of a function as a graph, which is a graph where no two of
its arrows share the same cdr. There is _also_ the use of *any* graph as a
function, which produces the idea of a state-transition action.
So, you have certain kinds of graphs that behave exactly as mathematical
functions, and then you have the process of treating any graph the way that
a function's graph representation is treated when you apply it to a value.
I hope that this clears things up.
>*--
*>*Laurent Martelli
*>*martelli@iie.cnam.fr
*
-Brian