Ralf Hemmecke <[EMAIL PROTECTED]> writes:

> On 01/10/2008 09:42 AM, Martin Rubey wrote:
> > Dear Gaby,
> > I saw you implemented map!$Stack as follows:
> >     map!(f: S -> S, s: %) ==               -- from HOAGG
> >       map!(f, deref s)$List(S)
> >       s
> > I have two questions:  1) why didn't you say
> >     map!(f: S -> S, s: %) == ref map!(f, deref s)$List(S)
> > 2) isn't     map!(f: S -> S, s: %) ==               -- from HOAGG
> >       map!(f, deref s)$List(S)
> >       s
> >    assuming that map! stores its result in s?  I'm not sure whether this is
> > ok:
> 
> Unfortunately 1) and 2) are not equivalent with the current implementation of
> the Reference domain. In boolean.spad.pamphlet one finds
> 
> Reference(S:Type): Type with
>          ref   : S -> %
>            ++  ref(n) creates a pointer (reference) to the object n.
>          ...
>      == add
>          Rep := Record(value: S)
>          p = q        == EQ(p, q)$Lisp
>          ref v        == [v]
>         ...
> 
> That looks to me like that for
> 
>    a: Reference Integer := ref 1;
>    b: Reference Integer := ref deref a;
> 
> it does not hold
> 
>    a = b

Quite possible.  But I wouldn't need that in map! anyway, would I?

the doc to map! only says

        map!(f,u) destructively replaces each element x of u by \axiom{f(x)}.

and I think that should be interpreted as:

        the result of map!(f,u) is obtained by replacing each element x of u by
        f(x). In this process, u may be destroyed.

I think that would allow the implementation

        map!(f: S -> S, s: %) == ref map!(f, deref s)$List(S)

but *not*

   map!(f: S -> S, s: %) ==               -- from HOAGG
       map!(f, deref s)$List(S)
       s

> That said ...
> 
> *Don't use l after you have called sort!(l) unless you say l:=sort!(l).*

That's exactly what I'm thinking.  (for sort! it is obvious, but not that much
for map!, that's why I asked)



Martin


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
open-axiom-devel mailing list
open-axiom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel

Reply via email to