This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


Number of operands of the internal representation a domain element

MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.




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?