Question: How to Build a Package Module from Collected Pieces while Using Shared Helper Procedures

I am creating a largish package (i.e., for use by others with the “with” command).

Most of the exported procedures have some derivations associated with the code.  This is at least a partial reason for using Maple.  So, I had organized a worksheet so that each exported procedure has its own section that included pre-coding derivations, the procedure, and some post-coding validation of the code (serious testing is done elsewhere).  At the end of the worksheet I had a section that built the module and saved it to the appropriate library.  If I execute the worksheet it runs through everything and builds a new version of the library containing the package.

Getting these exported procedures to bind to a local helper procedure that is shared among several exported procedures was a bit tricky.  The way I ended up doing it is illustrated in the attached worksheet.

From a life cycle perspective is there a better way to think about this?
 

restart

with(InertForm)

[Display, FromMathContainer, MakeInert, NoSimpl, Parse, SameStructure, ToMathContainer, ToMathML, Typeset, Value]

(1)

DistWorkSheet := proc (A, B) F(A[1]-B[1])+F(A[2]-B[2]) end proc

proc (A, B) F(A[1]-B[1])+F(A[2]-B[2]) end proc

(2)

"Test:=module()"

"  export Dist"

_local(Sqr)

"  option package;"

NULL

Sqr := proc (A) A*A end proc

 

Dist := eval(subs(F = eval(Sqr), eval(DistWorkSheet)))

"end module"

_m2052587788544

(3)

eval(Test:-Dist)

proc (A, B) (proc (A) A*A end proc)(A[1]-B[1])+(proc (A) A*A end proc)(A[2]-B[2]) end proc

(4)

Test:-Dist([0, 0], [1, 1])

2

(5)

NULL


 

Download PackageBuild.mw

Please Wait...