@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Common Lisp HyperSpec を眺める (1) zerop

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