読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

emacs lispにおける条件式のandとor

and、orはビット演算なんかで使うようなイメージでしたが、
emacs lispにおいては条件式っぽく使うことが可能です。

実際のところ

andは前から順繰りに実行して、全部あってれば最後の要素を返す。

(and (print 1) (print 2) (print 3))
; 1
; 2
; 3
; 3 (#o3, #x3, ?\C-c)

途中で負の値がでれば中断。要素も返さない

(and (print 1) nil (print 3))
; 1
; nil

一方、orは最初の真がでたらそこでオシマイ

(or (print 1) (print 2) (print 3))
; 1
; 1 (#o1, #x1, ?\C-a)

革命精神の不足から、私shuzo_kinoは点検を怠り、誤った知識を広めました。ここにその旨自己批判をすると共に(ry

最初、andの部分は全部正の条件だけで検証していました。
そのため、全部実行可能だったら末尾要素を返すものだと解釈していました。
初版へのコメントから間違いだった事がわかったので修正しておきます。