# 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

```