mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 22:00:12 +01:00
1.7 KiB
1.7 KiB
Front page snippets for Carbon
Quicksort
A sample of quicksort in Carbon.
package Sorting api;
fn Partition[T:! Comparable & Movable](s: Span(T))
-> i64 {
var i: i64 = -1;
for (element: T in s) {
if (element <= s.Last()) {
++i;
Swap(&s[i], &element);
}
}
return i;
}
fn QuickSort[T:! Comparable & Movable](s: Span(T)) {
if (s.Size() <= 1) {
return;
}
let p: i64 = Partition(s);
QuickSort(s[:p - 1]));
QuickSort(s[p + 1:]));
}
Carbon and C++
C++
// C++
#include <iostream>
#include <vector>
void WriteWithTotal(const std::vector<uint64_t>& v) {
uint64_t sum = 0;
for (uint64_t e : v) {
sum += e;
std::cout << e << "\n";
}
std::cout << "Total: " << sum << "\n";
}
auto main(int argc, char** argv) -> int {
WriteWithTotal({1, 2, 3});
return 0;
}
Carbon
// Carbon
package Summing api;
fn WriteWithTotal(v: Vector(u64)) {
var sum: u64 = 0;
for (e: u64 in v) {
sum += e;
Console.WriteLine(e);
}
Console.WriteLine(f"Total: {0}", sum);
}
fn Main() -> i64 {
WriteWithTotal((1, 2, 3));
return 0;
}
Mixed
// Carbon using C++'s vector
package Summing api;
import Cpp library "<vector>";
fn WriteWithTotal(v: Cpp.std.vector(u64)) {
var sum: u64 = 0;
for (e: u64 in v) {
sum += e;
Console.WriteLine(e);
}
Console.WriteLine("Total: {0}", sum);
}
// C++ calling Carbon
#include "summing.carbon.h"
auto main(int argc, char** argv) -> int {
Summing::WriteWithTotal({1, 2, 3});
return 0;
}