I have deleted my mails, sorry. But something like:

7) -> jlDocumentation mod <TAB> <TAB>
modTree              modifyPointData      modularFactor
modularLambda        moduleSum
mod_exp              modpeval             modularGcdPrimitive
modular_compose      moduloP
modifyPoint          modpreduction        modularInvariantJ    module
             modulus

(7) -> jlDocumentation moduleSum

  moduleSum(m1, m2) returns the sum of two modules in the framed
algebra F. Each module mi is represented as fol
  lows: F is a framed algebra with R-module basis w1, w2, ..., wn and
mi is a record [basis, basisDen, basisInv]
  . If basis is the matrix (aij, i = 1..n, j = 1..n), then a basis v1,
..., vn for mi is given by vi = (1/basisD
  en) * sum(aij * wj, j = 1..n), i.e. the ith row of 'basis' contains
the coordinates of the ith basis vector. S
  imilarly, the ith row of the matrix basisInv contains the
coordinates of wi with respect to the basis v1, ...,
   vn: if basisInv is the matrix (bij, i = 1..n, j = 1..n), then wi =
sum(bij * vj, j = 1..n). From: IntegralBas
  isTools



                             Type: Void
(7) -> jlDocumentation mod <TAB><TAB>
modTree              modifyPointData      modularFactor
modularLambda        moduleSum
mod_exp              modpeval             modularGcdPrimitive
modular_compose      moduloP
modifyPoint          modpreduction        modularInvariantJ    module
             modulus
(7) -> jlDocumentation modpreduction


   modpreduction(r, p) reduces a rational function r modulo prime p.
From: PolynomialEvaluationUtilities


   modpreduction(p, q) reduces all coefficients of p modulo q. From:
ModularEvaluationCategory


   modpreduction(pol, p) reduces polynomial pol modulo prime p. From:
PolynomialEvaluationUtilities



                             Type: Void

That uses a regular expressions system, sorry, strings are very bad
handled in panAxiom. But just that's would be very handy.

BTW: Timothy, your 'X' is already implemented in HyperTex with:

    ++ For example, using JLMatrix(JLObjFloat64):
    ++ \example{M:=nrand(4,4);}
    ++ \example{jlApply("svd", M::JLMatrix(JLObjFloat64)).S}
    ++ should be "equivalent" to svdvals(M)

Maybe I do not understand your 'X'.

BTW2: All my reconnaissance, of course, Tim.

Cheers,

Greg



Le jeu. 12 juin 2025 à 12:32, Tim Daly <axiom...@gmail.com> a écrit :
>
> Taking the idea from Ralf it seems that there could be a "hyperdoc" domain
> that implements all of the functions necessary to create user documentation
> with both text output and HTML output forms. From that domain it should
> be possible to re-create Hyperdoc in a browser.
>
>
>
> On Thursday, June 12, 2025 at 6:29:38 AM UTC-4 Tim Daly wrote:
>>
>> Within algebra documentation for a function there are ++ and -- comments
>> The ++ comments are intended as documentation.
>>
>> I have extended the meaning of ++ comments by appending a single letter.
>> For example in the 'map' function from 'StreamFunction3' you'll see
>>
>>     map : ((A,B) -> C,ST A,ST B) -> ST C
>>       ++ map(f,st1,st2) returns the stream whose elements are the
>>       ++ function f applied to the corresponding elements of st1 and st2.
>>       ++ \spad{map(f,[x0,x1,x2,..],[y0,y1,y2,..]) = [f(x0,y0),f(x1,y1),..]}.
>>       ++
>>       ++S
>>       ++X m:=[i for i in 1..]::Stream(Integer)
>>       ++X n:=[i for i in 1..]::Stream(Integer)
>>       ++X f(i:Integer,j:Integer):Integer == i+j
>>       ++X map(f,m,n)
>>
>> The ++X comments are part of the output shown during display functions, e.g.
>>
>> )d op map
>>
>> will show the ++X comments as "examples" of how to use the function.
>>
>> There is also the 'ApplicationProgramInterface' which allows user-level 
>> access
>> to various data structures:
>>
>> )abbrev package API ApplicationProgramInterface
>> ++ Author: Timothy Daly, Martin Rubey
>> ++ Date Created: 3 March 2009
>> ++ Date Last Updated: 24 March 2012
>> ++ Description:
>> ++ This package contains useful functions that expose Axiom system internals
>>
>> ApplicationProgramInterface() : SIG == CODE where
>>
>>   SIG ==> with
>>
>>     getDomains : Symbol -> Set Symbol
>>       ++ getDomains(s) takes a category and returns the list of domains
>>       ++ that have that category
>>       ++
>>       ++X getDomains 'IndexedAggregate
>>
>>     getAncestors : Symbol -> Set Symbol
>>       ++ getAncestors(s) takes a category and returns the list of domains
>>       ++ that have that category as ancestors
>>       ++
>>       ++X getAncestors 'IndexedAggregate
>>
>>     credits : () -> Void
>>       ++ credits() prints a list of people who contributed to Axiom
>>       ++
>>       ++X credits()
>>
>>     summary : () -> Void
>>       ++ summary() prints a short list of useful console commands
>>       ++
>>       ++X summary()
>>
>>     reportInstantiations : Boolean -> Void
>>       ++ reportInstantiations(bool) is a debugging tool to show
>>       ++ instantiation information
>>       ++
>>       ++X reportInstantiations(true)
>>       ++X 1
>>       ++X reportInstantiations(false)
>>
>>   CODE ==> add
>>
>>     getDomains(cat:Symbol):Set(Symbol) ==
>>       set [symbol car first destruct a _
>>         for a in (destruct domainsOf(cat,NIL$Lisp)$Lisp)::List(SExpression)]
>>
>>     getAncestors(cat:Symbol):Set(Symbol) ==
>>       set [symbol car first destruct a _
>>         for a in (destruct 
>> ancestorsOf(cat,NIL$Lisp)$Lisp)::List(SExpression)]
>>
>>     credits() == ( credits()$Lisp ; void() )
>>
>>     summary() == ( summary()$Lisp ; void() )
>>
>>     reportInstantiations(b:Boolean): Void ==
>>       REPORTINSTANTIATIONS(b)$Lisp
>>       void
>>
>>
>>
>>
>> On Thu, Jun 12, 2025 at 5:06 AM Grégory Vanuxem <g.va...@gmail.com> wrote:
>>>
>>> Hello,
>>>
>>>
>>> Le mer. 11 juin 2025 à 20:59, 'Ralf Hemmecke' via FriCAS - computer
>>> algebra system <fricas...@googlegroups.com> a écrit :
>>> >
>>> > Hi Waldek,
>>> >
>>> > as you know, I would like to let HyperDoc die.
>>> > But, maybe that sound too extreme for what I actually mean.
>>> > And I agree to some extend to your plan for a new hyperdoc.
>>> >
>>> > Let me explain my wishes.
>>> >
>>> > FriCAS should have an interface (in LISP or SPAD) that let's
>>> > SPAD or external programs get information about
>>> > categories/domains/packages/documentation.
>>> >  From such an interface it should be easy to generate any output format
>>> > be it html, rst or pdf.
>>>
>>> +1
>>>
>>> For what I am interested in right now, is displaying '++'
>>> documentation in text form, and. readable directly in the interpreter
>>> console.
>>> From what I have read in api.spad and api2.spad the implementations
>>> are tightly related the reST and HTML formats and I would like
>>> plain/text format also. I do not want to use a Regex style replacement
>>> method as it requires Julia or cl-ppcre and/or, for my concern,
>>> cl-ppcre-unicode. Looking at api2 for example there is code to return
>>> TexTree as a SEX expression. There is a TeXTree to HTML converter
>>> which outputs the conversion in a file, no routine from what I have
>>> seen that converts it to a String. I will eventually code something in
>>> this regard. Maybe Waldek, you have already done this privately?
>>> Having a generic parser would be a very good idea, I think. Gathering
>>> the two parser implementations.
>>>
>>>
>>>     jlDocumentation(op) ==
>>>       ops := getDatabase("o")$OperationsQuery
>>>       docs := elt(ops,equation('name, op)$QueryEquation)
>>>       elts : DataList(String) := elt(docs,'doc)
>>>       for i in 1 .. #elts repeat
>>>         output((elts.i)::OutputForm)$OutputPackage
>>>          -- PPRINT(jlEvalString(concat(["replace(raw_"",
>>>
>>>   "\spad{svd(m)} computes the singular value decomposition \spad{SVD} of 
>>> \spad{
>>>   m} such that \spad{SVD}.\spad{U} * diagonalMatrix(\spad{sv}) * 
>>> \spad{SVD}.\sp
>>>   ad{Vt} = \spad{m}."
>>>   "\spad{svd(m)} computes the singular value decomposition \spad{SVD} of 
>>> \spad{
>>>   m} such that \spad{SVD}.\spad{U} * diagonalMatrix(\spad{sv}) * 
>>> \spad{SVD}.\sp
>>>   ad{Vt} = \spad{m}."
>>>   "\spad{svd(m)} computes the singular value decomposition \spad{SVD} of 
>>> \spad{
>>>   m} such that \spad{SVD}.\spad{U} * diagonalMatrix(\spad{sv}) * 
>>> \spad{SVD}.\sp
>>>   ad{Vt} = \spad{m}."
>>>   "\spad{svd(m)} computes the singular value decomposition \spad{SVD} of 
>>> \spad{
>>>   m} such that \spad{SVD}.\spad{U} * diagonalMatrix(\spad{sv}) * 
>>> \spad{SVD}.\sp
>>>   ad{Vt} = \spad{m}."
>>>   "\spad{svd(m)} computes the singular value decomposition of the matrix 
>>> \spad{
>>>   m}."
>>>                                                                    Type: 
>>> Void
>>>
>>> And regexing/replacing, completely irrelevant for me, some Tex-like
>>> construct I would like to obtain something like:
>>> (25) -> jlDocumentation "svd"
>>>
>>> "svd(m) computes the singular value decomposition SVD of m such that
>>> SVD.U * diagonalMatrix(sv) * SVD.Vt = m."
>>> "svd(m) computes the singular value decomposition SVD of m such that
>>> SVD.U * diagonalMatrix(sv) * SVD.Vt = m."
>>> "svd(m) computes the singular value decomposition SVD of m such that
>>> SVD.U * diagonalMatrix(sv) * SVD.Vt = m."
>>> "svd(m) computes the singular value decomposition SVD of m such that
>>> SVD.U * diagonalMatrix(sv) * SVD.Vt = m."
>>> "svd(m) computes the singular value decomposition of the matrix m."
>>>                                                                Type:
>>> Void
>>>
>>> or:
>>>
>>> (26) -> jlDocumentation "string"
>>>
>>> "string(f) gives string corresponding to f. Valid only when string?(f) is 
>>> true"
>>> "string(i) returns the decimal representation of i as a string."
>>> "string(s) returns s as an element of Str. Error: if s is not an atom
>>> that also belongs to Str."
>>> "string(jt) returns the string representation of jt."
>>> "string(x) stringifies x."
>>> "string(s) converts the symbol s to a string. Error: if the symbol is
>>> subscripted."
>>>
>>> (27) -> jlDocumentation "str"
>>>                                                                    Type: 
>>> Void
>>>
>>> But with more information (conditional exports, origins etc.)  and
>>> more options. Probably as a system command?
>>> )display doc string as an example.
>>>
>>> Just my two cents.
>>>
>>> - Greg
>>>
>>> --
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "FriCAS - computer algebra system" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/fricas-devel/mb_O0196RMQ/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> fricas-devel...@googlegroups.com.
>>> To view this discussion visit 
>>> https://groups.google.com/d/msgid/fricas-devel/CAHnU2dY5SH52A0U56a8kSqSBO%2BFX0Lzsq%3Dw6hzBCfcuBd20m8Q%40mail.gmail.com.
>
> --
> 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 fricas-devel+unsubscr...@googlegroups.com.
> To view this discussion visit 
> https://groups.google.com/d/msgid/fricas-devel/d2b4d3a4-ce9e-4483-9d10-83f4add78e06n%40googlegroups.com.

-- 
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 fricas-devel+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/fricas-devel/CAHnU2dYuiju2PAUO3GyADN1TXYBsaYE-MYKrUsCA-ZL9_g_4kg%40mail.gmail.com.

Reply via email to