diff options
Diffstat (limited to 'src/interpret/value.rs')
| -rw-r--r-- | src/interpret/value.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/interpret/value.rs b/src/interpret/value.rs index c0ac96e..27f2668 100644 --- a/src/interpret/value.rs +++ b/src/interpret/value.rs @@ -148,6 +148,21 @@ impl Value { _ => Err(anyhow!("Left operand can't be compared.")), } } + + pub fn neg(self) -> Result<Value> { + match self { + Value::Float(float) => Ok(Value::Float(-float)), + Value::Int(int) => Ok(Value::Int(-int)), + _ => Err(anyhow!("Can't negate value.")), + } + } + + pub fn not(self) -> Result<Value> { + match self { + Value::Bool(bool) => Ok(Value::Bool(bool)), + _ => Err(anyhow!("Can't flip non-bool value.")), + } + } } impl Display for Value { |
