Ignoring the self-contradiction in the title, is there documentation for packages such as Algebra, which probably contains lots of useful functions? (The only one whose functionality I'm familiar with from other question is MatrixPowerMod).

Also, is there a list of other such undocumented packages anywhere?

Finally, at least for Algebra, how can I load it? The usual Needs["Algebra`"] fails.

I assume these things are undocumented because Wolfram doesn't promise to support them in future releases.

  • 3
    That is not a package, just a context. These functions are built-in and are used in the implementation of other, public functions. Think about what would happen if you yourself wrote a package for other people to use. You would implement a few functions and document them. But these functions would very likely rely on multiple other subroutines which are simply part of their implementation, but you did not mean them to be used or seen by your end users. Due to the nature of Mathematica, it is not really possible to fully hide these implementation details. This is what you are seeing here. – Szabolcs Apr 16 at 7:46
  • 2
    That said, Wolfram does have the habit of only exposing very high level, fully automatic functions. All methods are crammed into one fuction, the method to use for a problem is chosen automatically, and often it is not explained how this is done. Personally I do not agree with this philosophy, and I would very much like to see some of the building blocks, so I can use them to build something else myself. Recently, the situation is getting slightly better (see e.g. reference.wolfram.com/language/LowLevelLinearAlgebra/guide/… ) but there's still a very long way to go. – Szabolcs Apr 16 at 7:49
  • 1
    One of the more annoying examples of this is FindGraphCommunities. The problem that this function solves is not very well defined mathematically, so one can't practically draw conclusions from the result of the function without knowing what it did precisely. The methods are not documented. I can make a guess at what they might do, but important implementation details are still a mystery. Furthermore, the individual methods do generate useful (sometimes critical) ancillary data, which the main function doesn't expose. – Szabolcs Apr 16 at 8:23
up vote 1 down vote accepted

So first off in general, no. But for some packages this can be circumvented via autogeneration (e.g. what I post here).

This is about the best I can offer:

<< https://raw.githubusercontent.com/b3m2a1/mathematica-tools/master/DocFind.wl
DocFind["*", "Algebra`"]

boop

If you click on any of those links you'll see that this is all done at the kernel level without ::usage messages:

shit

and so autogeneration won't even help here

  • That seems truly unfortunate. Clearly there are people here who know what's in those package; I wonder how they found out? – rogerl Apr 16 at 0:34
  • 1
    @rogerl the classic way we figure out what an undocumented function does when we can't read the source is via lots of informed guessing. Either that or having a developer provide some manna from heaven. Everything I've discovered here comes via one of these. – b3m2a1 Apr 16 at 0:37

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.