Вступ
Документація Цілі 0.80.0

Типизація

Ціль має строгу статичну типизацію. Більшість вбудованих типів мають аналоги в С.

Ціль не дозволяє виконувати операції з різними типами чи типами різних розмірів. До прикладу, в Цілі не можна просто додати ц32 та ц64 (як int та long в С).

змінна а: ц32 = 2;
змінна б: ц64 = 3;

змінна в = а + б; // помилка компіляції

Автоматичного приведення типів не буде, а тому необхідно вручну перетворити одне зі значень.

змінна а: ц32 = 2;
змінна б: ц64 = 3;

змінна в = ц64(а) + б; // в буде ц64

Список вбудованих типів

Приклади

ціле

ціле містить значення цілого числа розміром залежно від системи (ssize_t в C).

змінна а: ціле = 10;

ц64

ц64 містить значення цілого числа розміром 64 біт (int64_t в C).

змінна а: ц64 = 10;

ц32

ц32 містить значення цілого числа розміром 32 біт (int32_t в C).

змінна а: ц32 = 10;

ц16

ц16 містить значення цілого числа розміром 16 біт (int16_t в C).

змінна а: ц16 = 10;

ц8

ц8 містить значення цілого числа розміром 8 біт (int8_t в C).

змінна а: ц8 = 10;

природне

природне містить значення природного числа розміром залежно від системи (size_t в C).

змінна а: природне = 10;

п64

п64 містить значення природного числа розміром 64 біт (uint64_t в C).

змінна а: п64 = 10;

п32

п32 містить значення природного числа розміром 32 біт (uint32_t в C).

змінна а: п32 = 10;

п16

п16 містить значення природного числа розміром 16 біт (uint16_t в C).

змінна а: п16 = 10;

п8

п8 містить значення природного числа розміром 8 біт (uint8_t в C).

змінна а: п8 = 10;

р64

р64 містить значення числа з рухомою крапкою розміром 64 біт (double в C).

змінна а: р64 = 1.23;

р32

р32 містить значення числа з рухомою крапкою розміром 32 біт (float в C).

змінна а: р32 = -3.21;

логічне

логічне містить значення природного числа розміром 8 біт (bool в C).

змінна а: логічне = так;
змінна б: логічне = ні;

містить адресу на значення типу Т (Т* в С).

змінна а: ціле = 123;
змінна б: *ціле = а::адреса;

() -> Т

() -> Т містить адресу на дію (Т (*)() в С).

дія сума(а: ціле, б: ціле): ціле {
  вернути а + б;
}

//...

змінна д: (ціле, ціле) -> ціле = сума;

кд

кд містить текстове значення (Дієкод з 8-бітним кодуванням як UTF-8); має недійсне в кінці.

змінна а: кд = "привіт";

Структура кд:

структура кд {
  дані: *п8;
  розмір: природне;
}

ю8

ю8 містить Unicode UTF-8 значення; має нульовий байт (недійсне) в кінці (як C-string).

змінна а: ю8 = ю8"привіт";

Структура ю8:

структура ю8 {
  дані: *п8;
  розмір: природне;
}