Re: list of Mma commands with specified properties
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg705] Re: [mg644] list of Mma commands with specified properties
- From: Lou Talman <me at talmanl.mscd.edu>
- Date: Mon, 10 Apr 95 16:57:56 -0600
Begin forwarded message: > Date: Wed, 5 Apr 1995 10:03:45 -0400 (EDT) > From: Jack Goldberg <jackgold at math.lsa.umich.edu> > To: mathgroup at christensen.cybernetics.net > Subject: [mg644] list of Mma commands with specified properties Hi Group; A student asked me "Which Mma commands have the option of allowing Trig->False so that she could set Trig->True?" This question raises a more general issue which I pose to you in the form of two questions: (1) How does one ask for a list of commands which have a specified option such as Trig->False ? (I won't clutter cyberspace with my makeshift solution, since I'll bet there is a "professional" way to do it.) (2) Same question for attributes, say for instance, Listable? Another student asked this question (actually it was me): (3) Is there a way of forcing the front end to produce output in MatrixForm in a given Mma session rather than a list of lists (of equal length) as it does now? This is of value when one knows in advanced that a particular session will be dealing entirely with matrices. Jack (1) & (2): The main problem here is obtaining a list of the commands available in Mathematica in a form that Mathematica can use as input to other commands. The "?*" produces a "list" of all objects currently defined, but the "?" command can't be composed with other commands, so one must be sneaky. I used the following package (which I wrote myself several years ago) to capture the output from "?*" in a text file with page width 30: -----------begin package------------ BeginPackage["LogToFile`"] LogToFile::usage = "LogToFile[filename, pagewidth, pageheight] toggles logging to the named file. The variables 'pagewidth' and 'pageheight' are optional; if not specified, they will be set to 78 and 22 (i.e., the Mathematica defaults), respectively. Logging to multiple files is possible; the files may be toggled in arbitrary order." Begin["LogToFile`private`"] LogToFile[filename_, pagewidth_:78, pageheight_:22] := ( tag = ToString[filename]; If[MemberQ[$Echo, tag], (* True *) $Echo = Complement[$Echo, {tag}]; $Output = Complement[$Output, {tag}]; $Messages = Complement[$Messages, {tag}]; $Urgent = Complement[$Urgent, {tag}]; Close[tag]; , (* False *) OpenAppend[tag, FormatType -> OutputForm, PageWidth -> pagewidth, PageHeight -> pageheight]; PrependTo[$Echo, tag]; PrependTo[$Output, tag]; PrependTo[$Messages, tag]; PrependTo[$Urgent, tag]; ];); Protect[LogToFile]; End[ ] EndPackage[ ] --------------end package-------------- For some reason, Mathematica running on the NeXT won't open and read text files that it wrote itself using this package, so I used my text editor to copy the contents of the file the package created to another file named "Commands.txt". Then, in a new Mathematica session: commands = ReadList["Commands.txt", Word] Select[commands, MemberQ[Options[ToExpression[#]], Trig -> _]&] It's clumsy, but it works. And once you have the textfile, you can search it for any old option. (3) Try this, or some variant: MyOutput[x_] := MatrixForm[x] /; MatrixQ[x]; MyOutput[x_] := x /; ! MatrixQ[x]; $Post = MyOutput --Lou Talman Metropolitan State College of Denver