// 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("==================================================")
}