Extend your language: Difference between revisions

(Omit Insitux)
 
(3 intermediate revisions by 2 users not shown)
Line 2,007:
 
=={{header|langur}}==
Langur doesn't currently have macros, but the following will otherwise accomplish the task, using the fact that a givenswitch expression may accept multiple test expressions. No extension of the language is necessary. This is not limited to 2 conditions.
 
We could use the nxor (logical equivalence) operator to test truthiness.
 
<syntaxhighlight lang="langur">givenswitch[and] .x nxor, .y nxor {
case true: ... # both true
case true, false: ... # first true, second false
Line 2,020:
To test directly for Boolean values (not truthiness), we could use the default == comparison.
 
<syntaxhighlight lang="langur">givenswitch[and] .x, .y {
case true: ... # both true
case true, false: ... # first true, second false
case false, true: ... # first false, second true
case null, _: ... # first null, second irrelevant
default: ... # other
}</syntaxhighlight>
Line 3,800:
{{trans|Kotlin}}
Like Kotlin Wren does not have macros but, using a combination of chained functions and methods, it's possible (if you squint a little) to create something which closely resembles a language extension.
<syntaxhighlight lang="ecmascriptwren">class IfBoth {
construct new(cond1, cond2) {
_cond1 = cond1
885

edits