Skip to content

Instantly share code, notes, and snippets.

@MaikKlein
Created May 25, 2013 15:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • 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));
}
@dotdash
Copy link

dotdash commented May 25, 2013

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

fn eval(e: &Expression) -> int {
  match *e {
    Add(ref x,ref y) => {eval(*x) + eval(*y)}
    Sub(ref x,ref 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