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

**Laurent Martelli**
martelli@iie.cnam.fr

*30 Oct 1999 08:04:04 +0200*

>>>>>* "Brian" == Brian Rice <water@tscnet.com> writes:
*
Brian> At 07:09 AM 10/30/99 +0200, Laurent Martelli wrote:
>>>>>>> "Brian" == Brian Rice <water@tscnet.com> writes:
>> 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.
Brian> Good question. It turns out that I'm using two different
Brian> connotations with the word function, which is unfortunate.
Brian> First, there is the representation of a function as a graph,
Brian> which is a graph where no two of its arrows share the same
Brian> cdr. There is _also_ the use of *any* graph as a function,
Brian> which produces the idea of a state-transition action.
Brian> So, you have certain kinds of graphs that behave exactly as
Brian> mathematical functions, and then you have the process of
Brian> treating any graph the way that a function's graph
Brian> representation is treated when you apply it to a value.
Brian> I hope that this clears things up.
Not really. In fact I understand the what you say, I was just noticing
that if the only entities that you manipulate in the system are arrows
and stes of arrows, it may lead to difficulties when comparing
objects. If you are given an object, you can't tell if it's a function
or a graph. This is not really a problem for functions since they use
objects the way they to use them anyway, but the user will want to
know if the result of a function call is a graph or a function.
--
Laurent Martelli
martelli@iie.cnam.fr