~james/gengo

gengo/samples-test/samples/MoonBit/expr.mbt -rw-r--r-- 318 bytes
50871857 — james chore(import): snapshot james.dad.town/gengo at 8f775550b0ee 16 hours ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Define a recursive enum for expressions
enum Expr { Num(Int); Mul(Expr, Expr) }

// Evaluate expression with pattern matching
fn eval(expr : Expr) -> Int {
  match expr {
    Num(n) => n
    Mul(a, b) => eval(a) * eval(b)
  }
}

fn main {
  let expr = Mul(Mul(Num(2), Num(3)), Num(4))
  println(eval(expr))  // 24
}