Re: usage messages in packages

*To*: mathgroup at smc.vnet.net*Subject*: [mg58095] Re: [mg58064] usage messages in packages*From*: "David Park" <djmp at earthlink.net>*Date*: Sat, 18 Jun 2005 06:07:47 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Andrzej, There is a method of appending to an existing usage message in a package. Here is an example (from the Algebra`ExpressionManipulation` package at my web site). $NewMessage[Extract, "usage"]; Extract::usage = Extract::usage <> " The positions in Extract can be extended positions such as \n \ eP[{1},{2,4}] which is the position of a+c in f[1+a+b+c]." Then when a user types ?Extract he gets... Extract[expr, list] extracts the part of expr at the position specified by list. Extract[expr, {list1, list2, ... }] extracts a list of parts of expr. Extract[expr, ... , h] extracts parts of expr, wrapping each of them with head h before evaluation. The positions in Extract can be extended positions such as eP[{1},{2,4}] which is the position of a+c in f[1+a+b+c]. David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Andrzej Kozlowski [mailto:andrzej at akikoz.net] To: mathgroup at smc.vnet.net One aspect of Mathematica packages that seems to me to be poorly designed is the way package usage messages can cover up a built in usage messages without any warning. A particularly irritating instance of this is when a package overloads the definition of a built in functions so that user receives no information at all about what happened. As an example compare: ?Normal Normal[expr] converts expr to a normal expression, from a variety of special forms. load the Combinatorica package: <<discretemath`combinatorica` ?Normal Normal is a value that options VertexStyle, EdgeStyle, and \ PlotRange can take on in ShowGraph. Another curious thing. Quit the Kernel and now try again loading the Combinatorica package in a different way In[1]:= <<discretemath` This time the usage message was not covered up: In[2]:= ?Normal Normal[expr] converts expr to a normal expression, from a \ variety of special forms. I had never realised that one could load directories of packages by using only small letters as in the above example until I saw Maxim doing it. This also works: << discretemath`combinatorica` Actually, this is consistent with the documentation which says: <<dir` , initialize all packages from directory dir, <<dir`package` , read in a package from the named directory but I had always assumed that "dir" and "package" actually meant "Dir" and "Package". Andrzej Kozlowski Chiba, Japan http://www.akikoz.net/andrzej/index.html http://www.mimuw.edu.pl/~akoz/