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.

Reply via email to