outrun/outrun-core/lib/logical_and.outrun

25 lines
677 B
Text

use Any
use Boolean
use Option
```doc
# LogicalAnd
Values which wish to implement the `&&` infix operator must implement this protocol.
```
protocol LogicalAnd, as: do
```doc
Should the value be considered `true` for purposes of an `&&` expression?
Must be implemented.
```
def true?(self: Self): Boolean
```doc
A short-circuiting logical and operation.
If `LogicalAnd.true?` is true for both the left-hand and right-hand values, the right-hand value is returned. Otherwise None.
```
def and(self: Self, _other: Any): Option, when: true?(self) && true?(other), as: Option.some(other)
def and(_self: Self, _other: Any): Option, as: Option.none()
end