fn swap*[T](s: &mut []T, a: uint, b: uint) unit = unsafe { let pa = s.ptr + a let pb = s.ptr + b pb.0 = pa.0 := pb.0 } fn reverse*[T](s: &mut []T) unit = { let mut i = 0 let mut j = s.len - 1 for if i < j { s.swap(i, j) i += 1 j -= 1 } }