Difficulty: Easy
Correct Answer: (symbolp
Explanation:
Introduction / Context: Lisp code frequently inspects data types at runtime. Recognizing the correct predicate for symbols is fundamental, especially when manipulating code-as-data, macros, or abstract syntax trees where symbols serve as identifiers.
Given Data / Assumptions:
Concept / Approach: The standard predicate for symbols is symbolp. Alternatives listed either are not predicates of the right kind or test different properties: constantp checks whether a form is a compile-time constant, while (* is an arithmetic call, not a predicate. There is no standard nonnumeric predicate in Common Lisp.
Step-by-Step Solution:
Identify candidate predicates that match Common Lisp naming conventions.Recall thatsymbolp returns t for symbols and nil otherwise.Select (symbolp .Verification / Alternative check: In a REPL: (symbolp 'x) → t; (symbolp 42) → nil. This confirms the behavior.
Why Other Options Are Wrong:
(* (nonnumeric (constantp None of the above: incorrect becausesymbolp is correct.Common Pitfalls: Confusing symbol tests with string or keyword tests; remember keywords are symbols too.
Final Answer: (symbolp
Discussion & Comments