phils . else if, Emacs Lisp, .
Emacs Lisp Common Lisp, (, , - , -, -, , ), , progn, prog1, prog2. , , .
(progn 1 2 3 4 5) 5, (prog1 1 2 3 4 5) 1, (prog2 1 2 3 4 5) 2. , progn, prog1, prog2 . , α, β, γ, δ - ( *Messages* buffer), :
(progn (message "α") (message "β") (message "γ") (message "δ")) ; => "δ"
(prog1 (message "α") (message "β") (message "γ") (message "δ")) ; => "α"
(prog2 (message "α") (message "β") (message "γ") (message "δ")) ; => "β"
3 Emacs Lisp, Common Lisp. , 3 rd? prog3. ! γ:
(progn (message "α") (message "β") (prog1 (message "γ") (message "δ"))) ; => "γ"
(prog1 (progn (message "α") (message "β") (message "γ")) (message "δ")) ; => "γ"
(prog2 (message "α") (progn (message "β") (message "γ")) (message "δ")) ; => "γ"
(prog2 (message "α") (prog2 (message "β") (message "γ") (message "δ"))) ; => "γ"
Common Lisp if, :
(if t
(progn (message "ε") (message "ζ"))
(progn (message "η") (message "θ"))) ; returns ζ
(if nil
(progn (message "ε") (message "ζ"))
(progn (message "η") (message "θ"))) ; returns θ
Emacs Lisp then progn, prog1, prog2, else , , phils . Emacs Lisp (if nil 1 2 3) 3, Common Lisp too many parameters for special operator IF.
. : "8.1.4 " " progn" " Emacs Lisp Intro ".