and と or
Emacs Lisp メモ
;; 引数がリストかどうかを評価 (defun listp (x) (or (null x) (consp x))) (setq kin '(a b c d)) (listp kin) ; => t
閏年計算をandとorで書いてみる。
4で割り切れたら閏年
ただし100で割り切れたら普通の年
もし100で割り切れたとしても、400で割り切れたら閏年
(defun leap (n) (cond ((and (= (% n 4) 0) (or (= (% n 400) 0) (/= (% n 100) 0))) t) (t nil))) (leap 2012) ;; => t
さらに簡略すると・・・・
こうなります。
(defun leap (n) (and (= (% n 4) 0) (or (= (% n 400) 0) (/= (% n 100) 0)))) (leap 2012)
関数定義の秘訣 |
---|
- condを使って処理を書く |
- その後に、簡略できそうなら簡略する |
- 簡略するときはandとorを活用する。 |