Let me start with something extremely simple:

(define (factorial x) (if (< x 2) 1 (* x (factorial (- x 1)))))and I ask the question to my hypothetical students “What does this mean?”

Student A says “No computer program can ever have a meaning. Someone could redefine *, or shadow

`if`

, and make any answer incorrect.”Student B says “I don't know, but the computer says ”

(fact 0) => 1 (fact 1) => 1 (fact 2) => 2 (fact 3) => 6 (fact 4) => 24 ...Student C says “It defines FACTORIAL as a recursive program that computes the factorial function for positive integer arguments.”

How do you grade these answers, and why?