Short-circuit evaluation: Difference between revisions

Added Dyalect programming language
(Added Dyalect programming language)
Line 884:
end;
end.</lang>
 
=={{header|Dyalect}}==
 
{{trans|Swift}}
 
<lang dyalect>func a(v) {
print(nameof(a), terminator: "")
return v
}
func b(v) {
print(nameof(b), terminator: "")
return v
}
func test(i, j) {
print("Testing a(\(i)) && b(\(j))")
print("Trace: ", terminator: "")
print("\nResult: \(a(i) && b(j))")
 
print("Testing a(\(i)) || b(\(j))")
print("Trace: ", terminator: "")
print("\nResult: \(a(i) || b(j))")
 
print()
}
test(false, false)
test(false, true)
test(true, false)
test(true, true)</lang>
 
{{out}}
 
<pre>Testing a(false) && b(false)
Trace: a
Result: false
Testing a(false) || b(false)
Trace: ab
Result: false
 
Testing a(false) && b(true)
Trace: a
Result: false
Testing a(false) || b(true)
Trace: ab
Result: true
 
Testing a(true) && b(false)
Trace: ab
Result: false
Testing a(true) || b(false)
Trace: a
Result: true
 
Testing a(true) && b(true)
Trace: ab
Result: true
Testing a(true) || b(true)
Trace: a
Result: true</pre>
 
=={{header|E}}==
Line 895 ⟶ 956:
<lang e>def x := a(i) && (def funky := b(j))</lang>
The choice we make is that <code>funky</code> is ordinary if the right-side expression was evaluated, and otherwise is <em>ruined</em>; attempts to access the variable give an error.
 
=={{header|Elena}}==
ELENA 4.x :
Anonymous user