Вступ
Документація Цілі 0.47.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).

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

адреса

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

змінна а: невідома_адреса = пусто;

адреса<Т>

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

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

памʼять

невідома_памʼять містить адресу на послідовність значень невідомого типу (void* в С).

змінна а: невідома_памʼять = пусто;

памʼять<Т>

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

змінна а: ціле = 123;
змінна б: памʼять<ціле> = а::адреса як памʼять<ціле>;

() -> Т

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

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

//...

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

кд

кд містить текстове значення (КД-Б з 8-бітним кодуванням).

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

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

структура кд {
  розмір: природне;
  дані: памʼять<п8>;
}

ю8

ю8 містить UTF-8 значення.

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

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

структура ю8 {
  розмір: природне;
  дані: памʼять<п8>;
}