Previous: Programming Tutorial Exercise 11, Up: Answers to Exercises [Contents][Index]

This turns out to be a much easier way to solve the problem. Let’s
denote Stirling numbers as calls of the function ‘`s`’.

First, we store the rewrite rules corresponding to the definition of Stirling numbers in a convenient variable:

```
s e StirlingRules RET
[ s(n,n) := 1 :: n >= 0,
s(n,0) := 0 :: n > 0,
s(n,m) := s(n-1,m-1) - (n-1) s(n-1,m) :: n >= m :: m >= 1 ]
C-c C-c
```

Now, it’s just a matter of applying the rules:

2: 4 1: s(4, 2) 1: 11 1: 2 . . . 4 RET 2 C-x ( ' s($$,$) RET a r StirlingRules RET C-x )

As in the case of the `fib`

rules, it would be useful to put these
rules in `EvalRules`

and to add a ‘`:: remember`’ condition to
the last rule.