Skip to content

Latest commit

 

History

History
150 lines (111 loc) · 2.24 KB

File metadata and controls

150 lines (111 loc) · 2.24 KB

C++ <-> Glint Cheat Sheet

How to do things in both.

std::vector<T> <-> [T]

Append

C++

vector.push_back(value);

Glint

dynamic_array += value;

Prepend

C++

std::insert(vector.begin(), value);

Glint

dynamic_array ~= value;

Insert

C++

std::insert(vector.begin() + index, value);

Glint

dynamic_array[index] += value;

Access

C++

vector.at(index);

Glint

@dynamic_array[index];

Range-based For Loop

C++

for (auto elem : vector) {}

Glint

for elem in dynamic_array, {};

Manual For Loop

C++

for (auto i = 0; i < vector.size(); ++i) {}

Glint

cfor
    i :: 0;
    i < dynamic_array.size();
    i += 1;
  {}

std::print()/ =std::cout= <-> print

Simple

C++

std::print("{}", value);

Glint

print value;

With Newline

C++

std::print("{}\n", value);
std::println("{}", value);
std::cout << value << '\n';
std::cout << value << std::endl;

Glint

print value, `\n`;

std::variant<T> <-> sum

C++

std::variant<int, char>;

std::variant<int, char> foo;

foo = 420;

static_assert(std::variant_size_v<decltype(foo)> == 2);
if (std::holds_alternative<int>(foo)) {
    std::println("69");
} else if (std::holds_alternative<char>(foo)) {
    std::println("42");
} else std::exit(1);

Glint

;; Note: Glint's sum type can represent multiple members of the same type,
;; distinguished by name.
sum { x : int; y : int; z : byte; };

foo : sum { x : int; y : int; z : byte; };

foo.y := 420;

;; `match` already staticly asserts all members are handled.
match foo, {
  .x  print 69;
  .y  print foo.y;
  .z  print 42;
};