Skip to content

Instantly share code, notes, and snippets.

@MaikKlein
Created May 25, 2013 15:04
Show Gist options
  • Save MaikKlein/5649389 to your computer and use it in GitHub Desktop.
Save MaikKlein/5649389 to your computer and use it in GitHub Desktop.
enum Expression{
Number(int),
Add(~Expression,~Expression),
Sub(~Expression,~Expression),
}
fn eval(e: Expression) -> int {
match e {
Add(x,y) => {eval(*x) + eval(*y)}
Sub(x,y) => {eval(*x) - eval(*y)}
Number(x) => {x}
}
}
fn main() {
let x = Add(~Number(5),~Number(10));
let result = eval(x);
println(fmt!("%?",result));
}
@Kimundi
Copy link

Kimundi commented May 25, 2013

Does this work?

enum Expression{
    Number(int), 
    Add(~Expression,~Expression),
    Sub(~Expression,~Expression),


}

fn eval(e: Expression) -> int {
    match e {
        Add(~x,~y) => {eval(x) + eval(y)}
        Sub(~x,~y) => {eval(x) - eval(y)}
        Number(x) => {x}

    }
}
fn main() {

    let x = Add(~Number(5),~Number(10));
    let result = eval(x);

    println(fmt!("%?",result));
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment