From: Barton W. <wi...@un...> - 2023-07-17 00:03:43
|
I don't do things like this all that much, but you might be able to do something like this: (defun $defmspec_list () (let ((lst nil)) (do-symbols (s (find-package "MAXIMA")) (when (get s 'mfexpr*) (push s lst))) (fapply 'mlist lst))) This only looks at functions in Maxima's core. (%i8) sort(defmspec_list()); (%o8) [@,alias,apply1,apply2,applyb1,applyb2,apropos,array,arrayinfo,assume,buildq,catch,cf,compfile,compile, create_list,declare,declare_index_properties,declare_translated,define,define_variable,defmatch,defrule,defstruct,deftaylor ,dependencies,describe,dispfun,display,disprule,errcatch,ev,eval_when,example,forget,fortran,fullmap,fullmapl,fundef, gauss,gradef,grind,interpolate,is,kill,ldisplay,let,letrules,letsimp,loadfile,local,lsum,macroexpand,macroexpand1, makelist,makeset,map,maplist,matchdeclare,matrixmap,maybe,mode_identity,mode_declare,new,numerval,ordergreat, orderless,playback,pop,printprops,product,properties,propvars,push,qput,rearray,remarray,remfunction,remlet,remove, remove_index_properties,remvalue,reset,reset_verbosely,save,scanmap,status,string,stringout,substinpart,substpart, subvar,sum,tellsimp,tellsimpafter,tex,time,timer,timer_info,trace,trace_options,translate,untimer,untrace, with_default_2d_display,with_slider,with_slider_draw,with_slider_draw2d,with_slider_draw3d,with_stdout,wxanimate, wxanimate_draw,wxanimate_draw3d,wxdraw_list,bigfloat,lambda,and,mcond,:=,::=,mdo,mdoin,go,mlocal, mmacroexpanded,not,or,mpois,block,mprogn,',mrat,:,quote] --Barton ________________________________ From: Eduardo Ochs <edu...@gm...> Sent: Saturday, July 15, 2023 23:09 To: Robert Dodier <rob...@gm...>; Jeronimo Pellegrini <j_...@al...> Cc: <max...@li...> <max...@li...> Subject: Re: [Maxima-discuss] :lisp (describe '$tex) Non-NU Email ________________________________ On Sat, 15 Jul 2023 at 21:36, Robert Dodier <rob...@gm...<mailto:rob...@gm...>> wrote: Hi Eduardo, For the record, Maxima functions defined by DEFMSPEC are so-called argument quoting functions; these functions work either with unevaluated symbols (e.g. kill), or manage evaluation by explicit calls to MEVAL (e.g. makelist) -- this latter approach leads to more or less unpredictable evaluation behavior. I think the best we can do is to document any such existing functions, and be very circumspect about introducing new ones. Hope this helps, Robert Hi Jeronimo and Robert, I grepped the sources and (I think that I) found 153 Maxima functions that are defined using defmspec... it would be good to have a nice way to jump to their sources, but I confess that I would be happy with a non-nice way, too. I just found that if I run this, to_lisp()$ (describe '$changevar) (describe '$tex) (symbol-plist '$tex) (get '$tex 'mfexpr*) (to-maxima) the output of the "(get '$tex 'mfexpr*)" is: #<FUNCTION (LAMBDA (L) :IN "/home/edrx/bigsrc/maxima/src/mactex.lisp") {52FB567B}> how do I extract the "/home/edrx/bigsrc/maxima/src/mactex.lisp" from that? Thanks in advance =P, Eduardo Ochs |