https://github.com/carbon-language/carbon-lang?tab=readme-ov-file
Обсуждали уже?
// Carbon:
package Geometry api;
import Math;
class Circle {
var r: f32;
}
fn PrintTotalArea(circles: Slice(Circle)) {
var area: f32 = 0;
for (c: Circle in circles) {
area += Math.Pi * c.r * c.r;
}
Print("Total area: {0}", area);
}
fn Main() -> i32 {
// A dynamically sized array, like `std::vector`.
var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0});
// Implicitly constructs `Slice` from `Array`.
PrintTotalArea(circles);
return 0;
}
Язык нацелен на совместную работу с С++ с последующей заменой последнего.
Эстетически весьма приятен. Наконец-то, Array называется Array, а не вектор-шмектор. За одно это можно простить круглые скобки для обобщений.
Очевидно, на данном этапе ни хрена не декларативен. Тут так и напрашивается
fn PrintTotalArea(circles: Slice(Circle))
{
var area: f32 = circles.Sum(c => Math.Pi * c.r * c.r);
Print("Total area: {0}", area);
}
Причём, для плюсов есть библиотеки, чтобы так писать, а тут махровая императивщина на титульной странице. Может, в будущем доделают.
Буду ждать и верить.