Difficulty: Easy
Correct Answer: (setq a 10)
Explanation:
Introduction / Context: LISP uses prefix notation and provides special forms for variable binding and assignment. A common beginner task is to set a symbol to a numeric value. Selecting the correct form builds confidence with fundamental LISP syntax and semantics.
Given Data / Assumptions:
Concept / Approach: In Common Lisp, setq assigns a value to a variable (symbol) that already exists or establishes it in the appropriate scope. The canonical assignment to set a to 10 is (setq a 10). setf is a generalized assignment macro, but (setf 10 a) is invalid because the place must be something assignable, not a literal. let creates new bindings in a local scope and requires a list of pairs; (let (a 10)) is not the correct binding syntax, which would be (let ((a 10)) ...). There is no standard assign special form in Common Lisp.
Step-by-Step Solution:
Identify the desired effect: set symbol a to numeric value 10.Recall that setq performs assignment: (setq symbol value).Confirm alternatives are syntactically or semantically invalid for this purpose.Verification / Alternative check: Running (setq a 10) in a REPL yields 10 and thereafter evaluating a produces 10, verifying the assignment.
Why Other Options Are Wrong:
(setf 10 a): attempts to assign into a literal; invalid place.(let (a 10)): malformed; proper binding is ((a 10)) and is local only.(assign a 10): not a standard Common Lisp form.None of the above: incorrect because (setq a 10) is correct.Common Pitfalls: Confusing local binding with assignment; misplacing arguments to setf; forgetting that literals cannot be assignment targets.
Final Answer: (setq a 10)
Discussion & Comments