axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] Functors (was: Licensing Aldor)


From: Page, Bill
Subject: [Axiom-developer] Functors (was: Licensing Aldor)
Date: Wed, 22 Nov 2006 06:48:48 -0500

On Wednesday, November 22, 2006 4:35 AM Frederic Lehobey wrote:
> 
> I believe I am starting to be slightly off-topic for axiom-legal
> with this message, so I think it will be my last contribution to
> this thread.

Ok. I want to reply to one technical point so I will shift to
axiom-developer.

> ... 
> > > What I mean is being able to create domains in compiled code with
> > > variables in their parameters (not change the value of the
variable
> > > after instantiation). With this much of the Galois field
factorisation
> > > of Axiom would be much easier to write *and maintain* (currently,
> > > it is a kind of hack using the integers and contradicting the
> > > grounding principles of Axiom).
> > 
> > I think you could expect a lot of help on this from Ralf Hemmecke
> > and Martin Rubey. I am not entirely sure what you mean by "variables
> > that do not change value after instantiation". I think this is the
> > definition of a constant. So what you want to do should be possible.
> 
> Let's be specific:
> 
>     PrimeField(7)
> 
> and
> 
>     PrimeField(p)
> 
> both work in interpreted mode whereas the second one is not compiled
> by the old compiler (it has already been discussed some time -- years
> -- ago on axiom-dev).
>

Are you referring to the discussion of dependent types in Aldor function
definitions such as

  g(p:PositiveInteger,k:Integer):PrimeField(p) == k::PrimeField(p)

This looks innocent and "natural" in Aldor, and in the Axiom interpreter
but William Sit and Ralf Hemmecke showed that in fact this is not really
a function definition in the sense of category theory at all but rather
a functor (i.e. package or domain constructor). See:

http://lists.nongnu.org/archive/html/axiom-developer/2005-01/msg00207.ht
ml
http://lists.nongnu.org/archive/html/axiom-developer/2005-01/msg00310.ht
ml

In the Axiom/SPAD compiler you can write such a functor as

g(p:PositiveInteger, k:Integer):with point:()->PrimeField(p)
  == add point()==k::PrimeField(p)

The function 'point' is necessary because a functor returns something
of type category. The parameters pick out a particular function from
the category. E.g.

  point()$g(7,4)

> ...

>From my point of view this is technically more correct than Aldor's
syntax.

Regards,
Bill Page. 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]