Вступ
Документація Цілі 0.38.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 = "привіт";

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

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

ю8

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

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

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

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