Carbon
От: Alekzander  
Дата: 01.04.24 22:08
Оценка: 1 (1)
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);
}


Причём, для плюсов есть библиотеки, чтобы так писать, а тут махровая императивщина на титульной странице. Может, в будущем доделают.

Буду ждать и верить.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.