Hi Waldek,

On 22 Jun 2022, at 09:10, Waldek Hebisch <[email protected]> wrote:
> 
> On Tue, Jun 21, 2022 at 08:32:03PM +0100, Paul Onions wrote:
>> 
>> Also, I’d like to get the Origins info so I can show where an operation is 
>> implemented, and basically get access to any of the other information that 
>> the HyperDoc browser displays.  Ideally there would be a well-defined API 
>> that would allow me to do this, but after looking at the br-*.boot files I 
>> see that it all seems to be mixed in with the HyperDoc page construction 
>> code.  So I need to spend some more time looking into it to see properly how 
>> it all works.
> 
> Note that Origins is about declaration, not implementation.  That is
> place which declared given operation.  Spad forms set theoretic sum
> on signatures, so "the same" signature may be declared in multiple
> placses, Origins probably only gives one declaration.  AFAICS
> Origins sometimes get confused by coditions.
> 
> Implemention is separate thing, you get it clicking at Implementions
> in view for operations.  But it works only for fully determined
> domains, that is all parameters must be explicit.

My understanding is that a domain brings with it a collection of operations, 
each one implemented either in the domain itself or in a category referenced by 
the domain (directly or indirectly).  So for any given domain I was expecting 
it to be possible to list all the operations and to be able to indicate the 
source of each one explicitly, so we would know how each operation is 
implemented in that domain.


I think you are saying that this can be done, but it requires all domain 
parameters to be explicitly specified, and that this is called “Implementation” 
in HyperDoc.  That’s understandable I guess, but it also means that “Origins” 
is of limited value if it just picks arbitrarily one place where the operation 
is declared?

>> However, I get the feeling that different parts of this algebra database 
>> “system” were perhaps developed at different times by different people, and 
>> that there is unnecessary overlap and redundancy at play here.
> 
> Well, primary info is in domain vectors.  For fully specified domain
> one can view it using routines in 'showimp.boot', for example using
> 
> )boot showSummary(FreeModule(Integer(), Symbol()))
> 
> (this is probably intended as help for people developing Spad
> compiler).
> 
> There are separate routines for viewing info without giving
> parameters (in 'nruncomp.boot') like:
> 
> )boot dcAll('Expression)
> 
> To speed up searching for declarations/documentaion we have
> databases.  Basic routine here is GETDATABSE which takes
> two arguments, one is name of thing (symbol), the second
> is kind of requested information.  In 'daase.lisp' there
> is description what various kinds mean.  One can also use
> SHOWDATABASE to get all information about constructor.
> Actual information is kept in four files: interp.daase,
> browse.daase, operation.daase and category.daase.
> HyperDoc also uses 'USERS.DAASE' and 'DEPENDENTS.DAASE’.

Thanks Waldek, lots of useful info here.

Paul


-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/1219F239-9BA8-4DB5-946F-E466967FFD02%40gmail.com.

Reply via email to