// cmd/main/main.mbt

///|
fn main {
  println("==================================================")
  println("     MoonGrad: Pure MoonBit Autograd Demo         ")
  println("==================================================")
  println("Training a Multi-Layer Perceptron to solve XOR...")

  // XOR inputs (4 samples, 2 features)
  let x = @lib.from_array([0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0], [4, 2])
  // XOR targets (4 samples, 1 target)
  let y = @lib.from_array([0.0, 1.0, 1.0, 0.0], [4, 1])

  // Network layers (2 -> 4 -> 1)
  let fc1 = @lib.Linear::new(2, 4, requires_grad=true)
  let fc2 = @lib.Linear::new(4, 1, requires_grad=true)

  // Gather parameters
  let params = @lib.Linear::parameters(fc1)
  let fc2_params = @lib.Linear::parameters(fc2)
  for i in 0.. Output: \{final_pred.data[0]} (Target: 0.0)")
  println("Input: [0, 1] -> Output: \{final_pred.data[1]} (Target: 1.0)")
  println("Input: [1, 0] -> Output: \{final_pred.data[2]} (Target: 1.0)")
  println("Input: [1, 1] -> Output: \{final_pred.data[3]} (Target: 0.0)")
  println("==================================================")
}