Hello,

Thanks. This is exactly what is needed, I think. But not only for HyperDoc
or HTML documentations, also at console level I would like. That's very
handy from my point of view. For quick information but also to check
standardisation of the documentation when possible.

Greg

Le jeu. 25 sept. 2025 à 13:35, Waldek Hebisch <de...@fricas.org> a écrit :

> On Wed, Sep 24, 2025 at 04:27:50AM +0200, Grégory Vanuxem wrote:
> > Hello Waldek, *,
> >
> > Sorry for the late mail, summer, etc.
> >
> > Le lun. 4 août 2025 à 19:59, Waldek Hebisch <de...@fricas.org> a écrit :
> >
> > [snip]
> >
> > > Currently the only user of comdb.text and libdb.tex is
> > > IndexCard and related database in 'alql.spad'.  I am
> > > not sure what to do with this.  In principle we could
> > > create strings on the fly form other info, but that
> > > means keeping code which is not needed for other purpose.
> > > We could modify IndexCard to internally use representaion
> > > like used for searches.  But exposing S-expression in
> > > user interface is not exactly nice, an having convertion
> > > to strings means keeping extra code.  We could entirely
> > > remove IndexCard.  I am not sure if anybody uses it,
> > > but it is mentioned in FriCAS book, so removal of
> > > IndexCard would mean removing or rewritning corresponding
> > > part.
> >
> > I am using IndexCard behind the scene of my code. My code is basically, a
> > Spad adaptation from a previous mail of you:
> >
> >     jlDocumentation  : Symbol -> Void
> >     ++ jlDocumentation(op) shows the documentation of the
> >     ++ Julia operation op. Trivial implementation.
> >
> >    jlDocumentation(op) ==
> >       ops := getDatabase("o")$OperationsQuery
> >       req := elt(ops,equation('name, string op)$QueryEquation)
> >       -- See alql.spad
> >       docs : DataList(String) := elt(req,'doc)
> >       origs : DataList(String) := elt(req,'origin)
> >       types : DataList(String) := elt(req, 'type)
> >
> > The rest is a grep clean code of the result. But frankly, removing
> > IndexCard is not a problem for me as far as it is possible to retrieve in
> > some manner the ++ documentation strings, the origins and the types
> > involved. Maybe this can be kept.
>
> Well, this is important part of my work.  I have domain which I currently
> call BrowserInformation which allows to do searches.  For operations
> it has types like:
>
>   Sig_doc ==> Record(signature : SE, condition : SE, origin : SE,
>                      documentation : String)
>   Op_rec ==> Record(name : SY, sdl : List(Sig_doc))
>
> So when you get Op_rec is represents a list of operations with common
> name and for each operation Sig_doc gives you relevant info:
> signature (return type first, followed by types of arguments),
> condition, origin and the docstring.
>
> Constructors are normally represented by their name, there are
> functions like:
>
>      constructor_documentation : SY -> String
>      constructor_form : SY -> SE
>      constructor_kind : SY -> SY
>
> but most information is accessed via calls to boot like:
>
> (1) -> getConstructorSignature('Polynomial)$Lisp
>
>    (1)
>    (
>      (Join  (PolynomialCategory #1 (IndexedExponents (Symbol)) (Symbol))
>
>        (CATEGORY  domain
>
>          (IF  (has #1 (Algebra (Fraction (Integer))))
>           (SIGNATURE integrate (% % (Symbol)))  noBranch)
>
>         (IF (has #1 (Canonical)) (ATTRIBUTE (Canonical)) noBranch))
>        )
>
>     (Ring))
>                                                             Type:
> SExpression
>
>
> That probably should be improved.
>
> > I wonder where you are at your stage.
>
> Replacement code works well for me.  Interfaces should be improved
> (like for constructors as noted above).  I plan to run comparison
> with Ralf's API code, that probably will lead to some changes.
>
> Currently I made a little pause.  I need to restructure the code and
> it is better to do this when code is not so frash in my mind.
>
> > Example (awful, but panAxiom/Mathematica kernels vs numerical softwares
> use
> > different parameter order):
> >
> > (1) -> jlDocumentation atan
> >    atan(x) represents the Fortran intrinsic function ATAN
> >     Signature:
> >    (%)->%
> >     From:
> >    FortranExpression
> <snip rest>
>
> I see, good.  AFAICS BrowserInformation has available at Spad level all
> info needed for this:
>
> (2) -> search_operations("atan")$BRINFO
>
>    (2)
>    [
>      [name = atan,
>
>          sdl
>        =
>          [
>            [signature = ((Stream Coef) (Stream Coef)), condition = T,
>             origin = (StreamTranscendentalFunctions Coef),
>
>                documentation
>              =
>               "\spad{atan(st)} computes arctangent of a power series
> \spad{st}.
>               "
>              ]
>            ,
>
>            [signature = ((Stream Coef) (Stream Coef)), condition = T,
>             origin = (StreamTranscendentalFunctionsNonCommutative Coef),
>
>                documentation
>              =
>               "\spad{atan(st)} computes arctangent of a power series
> \spad{st}.
>               "
>              ]
>            ,
>
>            [signature = (% %), condition = T,
>             origin = (ArcTrigonometricFunctionCategory),
>
>                documentation
>              =
>               "\spad{atan(x)} returns the arc-tangent of \spad{x}. When
> evaluat
>               ed into some subset of the complex numbers, one branch cut
> for at
>               an lies along the positive imaginary axis above \%\spad{i}
> (exclu
>               sive), continuous with the left half plane, the other along
> the n
>               egative imaginary axis below -\%\spad{i} (exclusive)
> continuous w
>               ith the right half plane. The domain does not contain
> \%\spad{i}
>               and -\%\spad{i}."
>              ]
>            ,
>
>            [signature = (% %), condition = T,
>             origin = (FortranExpression basicSymbols subscriptedSymbols R),
>
>                documentation
>              =
>                "\spad{atan(x)} represents the Fortran intrinsic function
> ATAN"
>              ]
>            ,
>
>            [signature = (% % %), condition = T, origin = (DoubleFloat),
>
>                documentation
>              =
>               "\spad{atan(x, y)} computes the arc tangent from \spad{x}
> with ph
>               ase \spad{y}."
>              ]
>            ,
>
>            [signature = (% % %), condition = T, origin = (Float),
>
>                documentation
>              =
>               "\spad{atan(x, y)} computes the arc tangent from \spad{x}
> with ph
>               ase \spad{y}."
>              ]
>            ,
>
>            [signature = (F F), condition = T,
>             origin = (ElementaryFunction R F),
>
>                documentation
>              =
>                "\spad{atan(x)} applies the inverse tangent operator to
> \spad{x}"
>              ]
>            ,
>
>            [signature = (ULS ULS), condition = T,
>             origin = (ElementaryFunctionsUnivariateLaurentSeries Coef UTS
> ULS),
>
>                documentation
>              =
>               "\spad{atan(z)} returns the arc-tangent of Laurent series
> \spad{z
>               }."
>              ]
>            ,
>
>            [signature = (UPXS UPXS), condition = T,
>
>                origin
>              =
>                (ElementaryFunctionsUnivariatePuiseuxSeries Coef ULS UPXS
> EFULS)
>              ,
>
>                documentation
>              =
>               "\spad{atan(z)} returns the arc-tangent of a Puiseux series
> \spad
>               {z}."
>              ]
>            ]
>        ]
>      ]
> Type: Union(List(Record(name: Symbol,sdl: List(Record(signature:
> SExpression,condition: SExpression,origin: SExpression,documentation:
> String)))),...)
>
> --
>                               Waldek Hebisch
>
> --
> 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/aNUo5zXSaXJgaOh-%40fricas.org
> .
>

-- 
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/CAHnU2dZ%3Dd1jxO_84LDMXhGbkNRrth4RXHMDYgfQO5-rX1FM4yw%40mail.gmail.com.

Reply via email to