If-Then
Conditional equivalence
Syntax
result = if record then value
result = if record then value
else value
result = if record then value
if record then value
result = if record then value
else if record then value
result = if record then value
else if record then value
else value
(result1, ..., resultN) = if record then (value, ..., valueN)
(result1, ..., resultN) = if record then (value, ..., valueN)
else (value, ..., valueN)
(result1, ..., resultN) = if record1 then (value, ..., valueN)
if record2 then (value, ..., valueN)
(result1, ..., resultN) = if record1 then (value, ..., valueN)
else if record2 then (value, ..., valueN)
(result1, ..., resultN) = if record1 then (value, ..., valueN)
else if record2 then (value, ..., valueN)
else (value, ..., valueN)
Description
If allows conditional equivalence, and works a lot like if in other languages. Our if has two components: The keyword if followed by a conditional; and the keyword then followed by one or more return objects. An optional else keyword indicates the default value:
This block is used to switch between the singular and plural for displaying the number of burgers each guest is eating. If statements can be composed, permitting the creation of complex conditional statements. For instance, instead of inviting friends and their spouses in two blocks (the first two blocks in the example program), I could have done it in a single block using an if statement:
This is equivalent to a union/and operator, which combines elements from disparate sets into the same set. The second way to use if is in conjunction with the else keyword:
This is equivalent to a choose/or operator, selecting only the first branch with a non-empty body. A bug in this program is that if some guest is tagged both #hungry and #vegetarian, that guest will actually receive two burgers. Therefore, while order of statements usually does not matter in Eve, if statements are one area where it does.
A final feature of the if statement is multiple returns. For instance, we could have done this:
Examples
Basic usage
burger-switch = if guest.burgers = 1 then "burger"
else "burgers"
[@"my party" date]
friend = [#friend busy-dates != date]
guest = if friend then friend
if friend.spouse then friend.spouse
Using else if
burgers = if guest = [@Arthur] then 3
else if guest = [#hungry] then 2
else if guest = [#vegetarian] then 0
else 1
Multiple returns
(burgers, status) = if guest = [@Arthur] then (3, #fed)
else if guest = [#hungry] then (2, #fed)
else if guest = [#vegetarian] then (0, #needsfood)
else (1, #fed)