Summary
Short-circuit evaluation, minimal evaluation, or McCarthy evaluation (after John McCarthy) is the semantics of some Boolean operators in some programming languages in which the second argument is executed or evaluated only if the first argument does not suffice to determine the value of the expression: when the first argument of the AND function evaluates to false, the overall value must be false; and when the first argument of the OR function evaluates to true, the overall value must be true. In programming languages with lazy evaluation (Lisp, Perl, Haskell), the usual Boolean operators short-circuit. In others (Ada, Java, Delphi), both short-circuit and standard Boolean operators are available. For some Boolean operations, like exclusive or (XOR), it is not possible to short-circuit, because both operands are always required to determine the result. Short-circuit operators are, in effect, control structures rather than simple arithmetic operators, as they are not strict. In imperative language terms (notably C and C++), where side effects are important, short-circuit operators introduce a sequence point – they completely evaluate the first argument, including any side effects, before (optionally) processing the second argument. ALGOL 68 used proceduring to achieve user-defined short-circuit operators and procedures. The use of short-circuit operators has been criticized as problematic: The conditional connectives — "cand" and "cor" for short — are ... less innocent than they might seem at first sight. For instance, cor does not distribute over cand: compare (A cand B) cor C with (A cor C) cand (B cor C); in the case ¬A ∧ C , the second expression requires B to be defined, the first one does not. Because the conditional connectives thus complicate the formal reasoning about programs, they are better avoided. In any programming language that implements short-circuit evaluation, the expression x and y is equivalent to the conditional expression if x then y else x, and the expression x or y is equivalent to if x then x else y.
About this result
This page is automatically generated and may contain information that is not correct, complete, up-to-date, or relevant to your search query. The same applies to every other page on this website. Please make sure to verify the information with EPFL's official sources.
Related courses (33)
BIOENG-603: Sharing your research
Giving a research talk (say, at a conference, to your department or in your research group meeting) is a really important part of a scientist's career. This course is designed for anyone who will be g
EE-597: Engineering internship credited with master project (master in Electrical and Electronical engineering)
L'étudiant effectue un stage en entreprise dans un domaine d'activité où les compétences de l'ingénieur en électricité et électronique sont mises en valeur
EE-597(a): Engineering internship credited with master project (master in Electrical and Electronical engineering)
L'étudiant effectue un stage en entreprise dans un domaine d'activité où les compétences de l'ingénieur en électricité et électronique sont mises en valeur
Show more
Related lectures (118)
Macroeconomic Model Analysis
Explores the impact of productivity shocks and government policies on key economic variables.
Context Passing: Execution Contexts
Covers context passing vs type classes, execution contexts, tamper-proofing, and the importance of specificity in Scala.
Pseudo Observations: Update and Error Analysis
Covers the concept of pseudo observations and their application in updating measurements.
Show more
Related publications (122)