function to apply prior to pretty-printing a module - Maple Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Programming : Modules : Module Exports : ModulePrint

asModulePrint - function to apply prior to pretty-printing a module

Calling Sequence

module() export ModulePrint, ...; ... end module;

Description

• 

If a module has an export or local named ModulePrint, the result of the ModulePrint() command is displayed instead of the module when a command in that module is executed.

• 

ModulePrint is analogous to the user-defined function formatting facility described in ?print, except no arguments are passed to the formatting function.

Examples

Here we create a linked list package.  The package provides the ability to create a new linked list, and prepend to an existing linked list via the New and Prepend exports.  Creating a new linked list returns a module node "object".

LinkedList := module()
    option package;
    export New, Prepend;
    local DisplayNode;

    New := proc( data )
    module()
        export Val, Next;
            local ModulePrint;

        Val := data;
        Next := 0;

            ModulePrint := proc()
               DisplayNode(thismodule);
            end proc;
    end module;
    end proc;

    Prepend := proc( llist, val )
        local node;
        node := New(val);
        node:-Next := eval(llist);
        return node;
    end proc;

    DisplayNode := proc( node )
    if node = 0 then
        return NULL;
    else
        return node:-Val, DisplayNode(node:-Next);
    end if;
    end proc;

end module:

Now load the package and create a linked list.  Note how the node modules get displayed.  The head node is formatted by the ModulePrint command which calls DisplayNode to output the entire linked list.

withLinkedList

New,Prepend

(1)

l:=LinkedList:-Newx

l:=x

(2)

l:=LinkedList:-Prependl,y

l:=y,x

(3)

l:=LinkedList:-Prependl,z

l:=z,y,x

(4)

See Also

module, ModuleApply, ModuleDeconstruct, print, procedure


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam