]>
In this example we write some functions that display Pascal's triangle. Pascal's triangle It demonstrates the use of piece-wise definitions and some output operations you probably haven't seen before.
To make these output operations available, we have to expose the domain OutputForm. OutputForm See ugTypesExpose for more information about exposing domains and packages.
Define the values along the first row and any column .
Define the values for when the row and column index are equal. Repeating the argument name indicates that the two index values are equal.
Now that we have defined the coefficients in Pascal's triangle, let's write a couple of one-liners to display it.
First, define a function that gives the -th row.
Next, we write the function displayRow to display the row, separating entries by blanks and centering.
Here we have used three output operations. Operation outputoutputOutputForm displays the printable form of objects on the screen, centercenterOutputForm centers a printable form in the width of the screen, and blankSeparateblankSeparateOutputForm takes a list of nprintable forms and inserts a blank between successive elements.
Look at the result.
Being purists, we find this less than satisfactory. Traditionally, elements of Pascal's triangle are centered between the left and right elements on the line above.
To fix this misalignment, we go back and redefine pascalRow to right adjust the entries within the triangle within a width of four characters.
Finally let's look at our purely reformatted triangle.
Unexpose OutputForm so we don't get unexpected results later.