Previous Page Next Page Contents

listlib::merge -- merging two ordered lists

Introduction

listlib::merge(list1, list2) merges both lists into one list.

Call(s)

listlib::merge(list1, list2 <, function>)

Parameters

list1, list2 - a MuPAD list
function - a function, that determines the merging order

Returns

an ordered list that contains the elements of both lists

Related Functions

listlib::singleMerge, listlib::insert, _concat, zip

Details

Example 1

Merging two ascending ordered lists:

>> listlib::merge([1, 3, 5, 7], [2, 4, 6, 8])
                         [1, 2, 3, 4, 5, 6, 7, 8]

Merging two descending ordered lists:

>> listlib::merge([7, 5, 3, 1], [8, 6, 4, 2], _not@_less)
                         [8, 7, 6, 5, 4, 3, 2, 1]

Example 2

The following example shows, how expressions can be ordered by a user defined priority. This order is given by the function named priority, which returns a smaller number, when the expression has a type with higher priority:

>> priority := X -> contains(["_power", "_mult", "_plus"], type(X)):
   priority(x^2), priority(x + 2)
                                   1, 3

The function sortfunc returns TRUE, if the both given arguments are in the right order, i.e., the first argument has a higher (or equal) priority than the second argument:

>> sortfunc := (X, Y) -> bool(priority(Y) > priority(X)):
   sortfunc(x^2, x + 2), sortfunc(x + 2, x*2)
                                TRUE, FALSE

Now the both lists are merged with regard to the given priority:

>> listlib::merge([x^y, x*2, -y], [x^2, x*y, x + y], sortfunc)
                         y   2
                       [x , x , 2 x, -y, x y, x + y]
>> delete priority, sortfunc:

Changes




Do you have questions or comments?


Copyright © SciFace Software GmbH & Co. KG 2000