Common Lisp HyperSpec のシンボルを眺めたり評価したりしています。今日は zerop です。
------------------------------------------------------------------------------ Function ZEROP Syntax: zerop number => generalized-boolean Pronunciation: ['zee(,)roh(,)pee] Arguments and Values: number---a number. generalized-boolean---a generalized boolean. Description: Returns true if number is zero (integer, float, or complex); otherwise, returns false. Regardless of whether an implementation provides distinct representations for positive and negative floating-point zeros, (zerop -0.0) always returns true. Examples: (zerop 0) => true (zerop 1) => false (zerop -0.0) => true (zerop 0/100) => true (zerop #c(0 0.0)) => true Side Effects: None. Affected By: None. Exceptional Situations: Should signal an error of type type-error if number is not a number. See Also: None. Notes: (zerop number) == (= number 0) ------------------------------------------------------------------------------
評価してみた結果はこちら。
(defun fact (n) (cond ((zerop n) 1) (t (* n (fact (1- n)))))) (fact 10) ;=> 3628800