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.