 I.e., it has to deduce that "n" is only used with integer expressions, and must therefore itself be an integer, and that all value-producing expressions within the function return integers.The same function can be expressed with clausal function definitions where the "if"-"then"-"else" conditional is replaced by a sequence of templates of the factorial function evaluated for specific values, separated by '|', which are tried one by one in the order written until a match is found