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?