<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, Objects in Maple 16</title>
    <link>http://www.mapleprimes.com/questions/134233-Objects-In-Maple-16</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Tue, 09 Jun 2026 18:17:15 GMT</lastBuildDate>
    <pubDate>Tue, 09 Jun 2026 18:17:15 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, Objects in Maple 16</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, Objects in Maple 16</title>
      <link>http://www.mapleprimes.com/questions/134233-Objects-In-Maple-16</link>
    </image>
    <item>
      <title>Objects in Maple</title>
      <link>http://www.mapleprimes.com/questions/134233-Objects-In-Maple-16?ref=Feed:MaplePrimes:Objects in Maple 16:Comments#answer134239</link>
      <itunes:summary>&lt;p&gt;1.&amp;nbsp; This is how you initialize the newly created object.&amp;nbsp; See the &lt;a href="http://www.maplesoft.com/support/help/Maple/view.aspx?path=ModuleCopy"&gt;?ModuleCopy&lt;/a&gt; help page.&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp; Maple allows objects to override existing global routines, so you could write an object that has its own "sin" routine.&amp;nbsp; That routine will be called when the object is passed as an argument to the global routine.&lt;/p&gt;
&lt;p&gt;&amp;gt; o := module()&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; option object;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export sin::static;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sin := proc() print( "method override" ); end;&lt;br&gt;&amp;gt; end;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o := Object&amp;lt;&amp;lt;47288987569152&amp;gt;&amp;gt;&lt;br&gt;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; sin( o );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "method override"&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See &lt;a href="http://www.maplesoft.com/support/help/Maple/view.aspx?path=object%2fmethods"&gt;?object,methods&lt;/a&gt; for more information&lt;/p&gt;
&lt;p&gt;Darin&lt;/p&gt;
&lt;!--break--&gt;
&lt;p&gt;-- Kernel Developer Maplesoft&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;1.&amp;nbsp; This is how you initialize the newly created object.&amp;nbsp; See the &lt;a href="http://www.maplesoft.com/support/help/Maple/view.aspx?path=ModuleCopy"&gt;?ModuleCopy&lt;/a&gt; help page.&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp; Maple allows objects to override existing global routines, so you could write an object that has its own "sin" routine.&amp;nbsp; That routine will be called when the object is passed as an argument to the global routine.&lt;/p&gt;
&lt;p&gt;&amp;gt; o := module()&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; option object;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export sin::static;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sin := proc() print( "method override" ); end;&lt;br&gt;&amp;gt; end;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o := Object&amp;lt;&amp;lt;47288987569152&amp;gt;&amp;gt;&lt;br&gt;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; sin( o );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "method override"&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See &lt;a href="http://www.maplesoft.com/support/help/Maple/view.aspx?path=object%2fmethods"&gt;?object,methods&lt;/a&gt; for more information&lt;/p&gt;
&lt;p&gt;Darin&lt;/p&gt;
&lt;!--break--&gt;
&lt;p&gt;-- Kernel Developer Maplesoft&lt;/p&gt;</description>
      <guid>134239</guid>
      <pubDate>Tue, 15 May 2012 22:03:46 Z</pubDate>
      <itunes:author>dohashi</itunes:author>
      <author>dohashi</author>
    </item>
    <item>
      <title>Two arguments</title>
      <link>http://www.mapleprimes.com/questions/134233-Objects-In-Maple-16?ref=Feed:MaplePrimes:Objects in Maple 16:Comments#answer134240</link>
      <itunes:summary>&lt;p&gt;In (1), ModuleApply appear to be passing two arguments, but in fact it is passing all of the arguments it received via the special variable _passed (aka args).&lt;/p&gt;
&lt;pre&gt;(**) foo := proc() print(_passed); end proc: # foo passes all its arguments to print
(**) foo(1,2,3,4);
                                  1, 2, 3, 4
(**) foo(blah);
                                     blah
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;In (1), ModuleApply appear to be passing two arguments, but in fact it is passing all of the arguments it received via the special variable _passed (aka args).&lt;/p&gt;
&lt;pre&gt;(**) foo := proc() print(_passed); end proc: # foo passes all its arguments to print
(**) foo(1,2,3,4);
                                  1, 2, 3, 4
(**) foo(blah);
                                     blah
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;</description>
      <guid>134240</guid>
      <pubDate>Tue, 15 May 2012 22:22:36 Z</pubDate>
      <itunes:author>John May</itunes:author>
      <author>John May</author>
    </item>
    <item>
      <title>Method name lookup in Maple16</title>
      <link>http://www.mapleprimes.com/questions/134233-Objects-In-Maple-16?ref=Feed:MaplePrimes:Objects in Maple 16:Comments#answer134242</link>
      <itunes:summary>&lt;p&gt;&lt;br&gt;&amp;gt;See &lt;a href='http://www.maplesoft.com/support/help/search.aspx?term=object,methods' target='_new'&gt;?object,methods&lt;/a&gt; for more information&lt;br&gt;&lt;br&gt;What it says:&lt;br&gt;&lt;br&gt;&amp;gt;To call a method that is exported by an object, use the standard&lt;br&gt;&amp;gt;function calling syntax with the object as an argument.&amp;nbsp; When&lt;br&gt;&amp;gt;evaluating the function call, Maple will search the arguments, left to&lt;br&gt;&amp;gt;right, for an object that exports a method with the same name as the&lt;br&gt;&amp;gt;specified function.&amp;nbsp; The first object found with a matching method&lt;br&gt;&amp;gt;will have its method called with the given arguments.&lt;br&gt;&lt;br&gt;What it might better say:&lt;br&gt;&lt;br&gt;&amp;gt;To call a method that is exported by an object, &lt;br&gt;** you can use the name qualified by that object and :-, as in obj:-method.&lt;br&gt;** If you omit the obj:- qualifier, then Maple will resolve the call as&lt;br&gt;** follows: first, &lt;br&gt;&amp;gt; Maple will search the arguments, left to&lt;br&gt;&amp;gt;right, for an object that exports a method with the same name as the&lt;br&gt;&amp;gt;specified function.&amp;nbsp; The first object found with a matching method&lt;br&gt;&amp;gt;will have its method called with the given arguments.&lt;br&gt;** If no such method is found, then Maple will search for a global&lt;br&gt;** procedure with the same name.&lt;br&gt;&lt;br&gt;This is consistent with:&lt;br&gt;&lt;br&gt;&lt;br&gt;module AAAA() option object;&lt;br&gt;&amp;nbsp; export foo := proc() print("AAAA foo") end proc; end module;&lt;br&gt;module BBBB() option object;&lt;br&gt;&amp;nbsp; export foo := proc() print("BBBB foo") end proc; end module;&lt;br&gt;foo:=proc() print("GLOBAL foo") end proc;&lt;br&gt;&lt;br&gt;foo(AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;foo(BBBB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;foo();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"GLOBAL foo"&lt;br&gt;foo(AAAA,BBBB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;foo(BBBB,AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;AAAA:-foo(BBBB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;BBBB:-foo(AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;foo(AAAA,BBBB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;foo(BBBB,AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;foo(1,2,3,AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;BBBB:-foo(1,2,3,AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;&lt;br&gt;&lt;br&gt;A question is, in the case of nested classes where the method is&lt;br&gt;called unqualified, what does Maple do? Search from the innermost&lt;br&gt;outward (an enclosing class could have foo, and there could be a&lt;br&gt;global foo)? Also, can one partially qualify a name and then it stops&lt;br&gt;the search at the partial qualification?&lt;/p&gt;
&lt;p&gt;BTW, in ?:= it says&lt;/p&gt;
&lt;p&gt;&amp;gt;The ":-" operator can also be used as a unary, prefix operator, whose&lt;br&gt;&amp;gt;sole operand is a symbol. The expression :-sym evaluates to the&lt;br&gt;&amp;gt;global instance of sym, even if there is a local binding for sym in&lt;br&gt;&amp;gt;scope.&lt;/p&gt;
&lt;p&gt;but&lt;/p&gt;
&lt;p&gt;:=foo(AAAA)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;/p&gt;
&lt;p&gt;and it didn't get the global one as apparently promised by ?:=&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;&lt;br&gt;&amp;gt;See &lt;a href='http://www.maplesoft.com/support/help/search.aspx?term=object,methods' target='_new'&gt;?object,methods&lt;/a&gt; for more information&lt;br&gt;&lt;br&gt;What it says:&lt;br&gt;&lt;br&gt;&amp;gt;To call a method that is exported by an object, use the standard&lt;br&gt;&amp;gt;function calling syntax with the object as an argument.&amp;nbsp; When&lt;br&gt;&amp;gt;evaluating the function call, Maple will search the arguments, left to&lt;br&gt;&amp;gt;right, for an object that exports a method with the same name as the&lt;br&gt;&amp;gt;specified function.&amp;nbsp; The first object found with a matching method&lt;br&gt;&amp;gt;will have its method called with the given arguments.&lt;br&gt;&lt;br&gt;What it might better say:&lt;br&gt;&lt;br&gt;&amp;gt;To call a method that is exported by an object, &lt;br&gt;** you can use the name qualified by that object and :-, as in obj:-method.&lt;br&gt;** If you omit the obj:- qualifier, then Maple will resolve the call as&lt;br&gt;** follows: first, &lt;br&gt;&amp;gt; Maple will search the arguments, left to&lt;br&gt;&amp;gt;right, for an object that exports a method with the same name as the&lt;br&gt;&amp;gt;specified function.&amp;nbsp; The first object found with a matching method&lt;br&gt;&amp;gt;will have its method called with the given arguments.&lt;br&gt;** If no such method is found, then Maple will search for a global&lt;br&gt;** procedure with the same name.&lt;br&gt;&lt;br&gt;This is consistent with:&lt;br&gt;&lt;br&gt;&lt;br&gt;module AAAA() option object;&lt;br&gt;&amp;nbsp; export foo := proc() print("AAAA foo") end proc; end module;&lt;br&gt;module BBBB() option object;&lt;br&gt;&amp;nbsp; export foo := proc() print("BBBB foo") end proc; end module;&lt;br&gt;foo:=proc() print("GLOBAL foo") end proc;&lt;br&gt;&lt;br&gt;foo(AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;foo(BBBB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;foo();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"GLOBAL foo"&lt;br&gt;foo(AAAA,BBBB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;foo(BBBB,AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;AAAA:-foo(BBBB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;BBBB:-foo(AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;foo(AAAA,BBBB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;foo(BBBB,AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;foo(1,2,3,AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;br&gt;BBBB:-foo(1,2,3,AAAA);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"BBBB foo"&lt;br&gt;&lt;br&gt;&lt;br&gt;A question is, in the case of nested classes where the method is&lt;br&gt;called unqualified, what does Maple do? Search from the innermost&lt;br&gt;outward (an enclosing class could have foo, and there could be a&lt;br&gt;global foo)? Also, can one partially qualify a name and then it stops&lt;br&gt;the search at the partial qualification?&lt;/p&gt;
&lt;p&gt;BTW, in ?:= it says&lt;/p&gt;
&lt;p&gt;&amp;gt;The ":-" operator can also be used as a unary, prefix operator, whose&lt;br&gt;&amp;gt;sole operand is a symbol. The expression :-sym evaluates to the&lt;br&gt;&amp;gt;global instance of sym, even if there is a local binding for sym in&lt;br&gt;&amp;gt;scope.&lt;/p&gt;
&lt;p&gt;but&lt;/p&gt;
&lt;p&gt;:=foo(AAAA)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #"AAAA foo"&lt;/p&gt;
&lt;p&gt;and it didn't get the global one as apparently promised by ?:=&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <guid>134242</guid>
      <pubDate>Tue, 15 May 2012 23:48:00 Z</pubDate>
      <itunes:author>gwpatrick</itunes:author>
      <author>gwpatrick</author>
    </item>
    <item>
      <title>There is a difference between calling a method</title>
      <link>http://www.mapleprimes.com/questions/134233-Objects-In-Maple-16?ref=Feed:MaplePrimes:Objects in Maple 16:Comments#comment134277</link>
      <itunes:summary>&lt;p&gt;There is a difference between calling a method using the standard function call syntax and using :-.&lt;/p&gt;
&lt;p&gt;&amp;gt; module A() option object;&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export foo::static := proc() print( 'procname'( _passed ) ) end proc; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export ModulePrint := proc() 'A' end;&lt;br&gt;&amp;gt; end module:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; module B() option object;&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export foo::static := proc() print( 'procname'( _passed ) ) end proc; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export ModulePrint := proc() 'B' end;&lt;br&gt;&amp;gt; end module:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; foo := proc() print( 'procname'( _passed ) ) end proc:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; foo( B );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B:-foo(B)&lt;br&gt;&lt;br&gt;&amp;gt; foo( A, B );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A, B)&lt;br&gt;&lt;br&gt;&amp;gt; foo( B, A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B:-foo(B, A)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Notice how the following two calling sequences differ:&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&amp;gt; foo( A, B );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A, B)&lt;br&gt;&lt;br&gt;&amp;gt; A:-foo(B);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(B)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the first case, the object A is passed as a parameter into A:-foo, in the second case it is not.&amp;nbsp; With objects, methods are generally declared static.&amp;nbsp; Thus if the methods are going to modify the object (A in this case), it needs to be passed in as a parameter.&lt;/p&gt;
&lt;p&gt;So foo( A, B ) and A:-foo( B ) are very different.&lt;/p&gt;
&lt;p&gt;I'm not sure what you mean by "nested objects".&amp;nbsp; When scanning a parameter sequence, Maple is looking for objects, anything else (like a list containing objects) is not an object.&lt;/p&gt;
&lt;p&gt;With respect to :-, ( I think you accidently wrote := ), :- is used to specify which package a name is found in.&amp;nbsp; When used as a unary prefix operator, it specifies the global, top level name.&amp;nbsp; This is generally used when there exists a module or package procedure that would be used if the :- was not present.&amp;nbsp; For an object method, the global name is the name that is mapped to the object method, so :-foo( A ) and foo( A ) are the same, assuming foo is not overloaded.&amp;nbsp; When foo is overloaded, then :- can be used to access the global foo, which is the foo that maps onto the object method.&lt;/p&gt;
&lt;p&gt;&amp;gt; module A() option object;&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export foo := proc() print( 'procname'( _passed ) ) end proc; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export ModulePrint := proc() 'A' end;&lt;br&gt;&amp;gt; end module:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; module fooExporter()&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; option package;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export foo := proc() print( 'procname'( _passed ) ) end proc;&lt;br&gt;&amp;gt; end:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; :-foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; fooExporter:-foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fooExporter:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; with( fooExporter );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [foo]&lt;br&gt;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fooExporter:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; :-foo( A );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A)&lt;/p&gt;
&lt;p&gt;Darin&lt;/p&gt;
&lt;!--break--&gt;
&lt;p&gt;-- Kernel Developer Maplesoft&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;There is a difference between calling a method using the standard function call syntax and using :-.&lt;/p&gt;
&lt;p&gt;&amp;gt; module A() option object;&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export foo::static := proc() print( 'procname'( _passed ) ) end proc; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export ModulePrint := proc() 'A' end;&lt;br&gt;&amp;gt; end module:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; module B() option object;&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export foo::static := proc() print( 'procname'( _passed ) ) end proc; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export ModulePrint := proc() 'B' end;&lt;br&gt;&amp;gt; end module:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; foo := proc() print( 'procname'( _passed ) ) end proc:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; foo( B );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B:-foo(B)&lt;br&gt;&lt;br&gt;&amp;gt; foo( A, B );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A, B)&lt;br&gt;&lt;br&gt;&amp;gt; foo( B, A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B:-foo(B, A)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Notice how the following two calling sequences differ:&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&amp;gt; foo( A, B );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A, B)&lt;br&gt;&lt;br&gt;&amp;gt; A:-foo(B);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(B)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the first case, the object A is passed as a parameter into A:-foo, in the second case it is not.&amp;nbsp; With objects, methods are generally declared static.&amp;nbsp; Thus if the methods are going to modify the object (A in this case), it needs to be passed in as a parameter.&lt;/p&gt;
&lt;p&gt;So foo( A, B ) and A:-foo( B ) are very different.&lt;/p&gt;
&lt;p&gt;I'm not sure what you mean by "nested objects".&amp;nbsp; When scanning a parameter sequence, Maple is looking for objects, anything else (like a list containing objects) is not an object.&lt;/p&gt;
&lt;p&gt;With respect to :-, ( I think you accidently wrote := ), :- is used to specify which package a name is found in.&amp;nbsp; When used as a unary prefix operator, it specifies the global, top level name.&amp;nbsp; This is generally used when there exists a module or package procedure that would be used if the :- was not present.&amp;nbsp; For an object method, the global name is the name that is mapped to the object method, so :-foo( A ) and foo( A ) are the same, assuming foo is not overloaded.&amp;nbsp; When foo is overloaded, then :- can be used to access the global foo, which is the foo that maps onto the object method.&lt;/p&gt;
&lt;p&gt;&amp;gt; module A() option object;&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export foo := proc() print( 'procname'( _passed ) ) end proc; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export ModulePrint := proc() 'A' end;&lt;br&gt;&amp;gt; end module:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; module fooExporter()&lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; option package;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export foo := proc() print( 'procname'( _passed ) ) end proc;&lt;br&gt;&amp;gt; end:&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; :-foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; fooExporter:-foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fooExporter:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; with( fooExporter );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [foo]&lt;br&gt;&lt;br&gt;&amp;gt; &lt;br&gt;&amp;gt; foo( A );&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fooExporter:-foo(A)&lt;br&gt;&lt;br&gt;&amp;gt; :-foo( A );&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A:-foo(A)&lt;/p&gt;
&lt;p&gt;Darin&lt;/p&gt;
&lt;!--break--&gt;
&lt;p&gt;-- Kernel Developer Maplesoft&lt;/p&gt;</description>
      <guid>134277</guid>
      <pubDate>Wed, 16 May 2012 17:24:11 Z</pubDate>
      <itunes:author>dohashi</itunes:author>
      <author>dohashi</author>
    </item>
  </channel>
</rss>