Number of operands of the internal representation a domain element

Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.




extnops(object) returns the number of operands of the object's internal representation.

For objects of a basic data type such as expressions, sets, lists, tables, arrays, hfarrays etc., extnops yields the same result as the function nops. The only difference to the function nops is that extnops cannot be overloaded by domains implemented in the MuPAD® language.

Internally, a domain element may consist of an arbitrary number of data objects; extnops returns the actual number of internal operands. Since every domain should provide interface methods, extnops should only be used from inside these methods. "From the outside", the function nops should be used.


Example 1

extnops returns the number of entries of a domain element:

d := newDomain("demo"): e := new(d, 1, 2, 3, 4): extnops(e)

delete d, e:

Example 2

For kernel domains, extnops is equivalent to nops:

extnops([1, 2, 3, 4]), nops([1, 2, 3, 4])

Example 3

We define a domain of lists. Its internal representation is a single object (a list of kernel type DOM_LIST):

myList := newDomain("lists"): 
myList::new := proc(l : DOM_LIST) begin new(myList, l) end_proc:

We want the functionality of nops for this domain to be the same as for the kernel type DOM_LIST. To achieve this, we overload the function nops. The internal list is accessed via extop(l, 1):

myList::nops := l -> nops(extop(l, 1)):

We create an element of this domain:

mylist := myList([1, 2, 3])

Since nops was overloaded, extnops provides the only way of determining the number of operands of the internal representation of mylist. In contrast to nops, extnops always returns 1, because the internal representation consists of exactly one list:

nops(mylist), extnops(mylist)

delete myList, mylist:



An arbitrary MuPAD object

Return Values

Nonnegative integer.

See Also

MuPAD Domains

MuPAD Functions

Was this topic helpful?