Write a gate that takes some integer n and returns n! (i.e., the factorial of n).
0! = 1 1! = 1 2! = 2 x 1 3! = 3 x 2 x 1 4! = 4 x 3 x 2 x 1 and so on...
Make sure your gate is "tail call optimized". Feel free to look up TCO so that you have a strong understanding of it---this is an important concept for functional programming.
Having a TCO gate means, among other things, that any recursion you use shouldn't be embedded within a larger cell. E.g., don't recurse like this:
[one-result $(c new-c)]