mavka-ukr / mavka

Сучасна українська мова програмування
https://мавка.укр
Other
54 stars 4 forks source link

Пропозиції: Список #5

Closed harnyk closed 1 year ago

harnyk commented 1 year ago

Методи роботи зі списками

Вступ

Ця задача є чернеткою пропозицій і закликом до обговорення. На її основі можна буде створбвати окремі задачі по кожній ухваленій пропозиції.

Реалізовано

Ініціалізація

ч = Список(1,2,3)

Ітерація

перебрати ч як х
  друк(х)
кінець

Доступ (чомусь працює тільки асинхронно):

другийЕлемент = чекати ч.отримати(1)
друк(другийЕлемент)

Пропозиції

Довжина

ч.розмір

або

ч.розмір()

Встановити

ч.встановити(1, 2)

Або можна реалізувати array access operator .(), який би працював на читання і запис.

Його ж можна використовувати зі структурами для динамічного доступу до полів.

# Встановити
ч.(1) = 2

# Отримати
ч.(1)

Слайс (відрізок)

ч.відрізок(1,3)

або

;; елементи 1,2,3,4
ч.(1..5)

;; елементи 0,1,2,3,4
ч.(..5)

;; елементи 3,4,...
ч.(3..)

;; копія
ч.(..)

Конкатенація

Або так:

а = Список(1,2,3)
б = Список(100,200,300)
в = а.причепити(б)
друк(в) ;;1,2,3,100,200,300

Або так:

а = Список(1,2,3)
б = Список(100,200,300)
в = а + б
друк(в) ;;1,2,3,100,200,300
kohutd commented 1 year ago

Дуже подобається ідея з оператором доступу, думаю щось таке і додамо. На рахунок дій і властивостей Списку, то пропоную зробити табличку з методами які має Array в JS і їх перекласти українською. І від цього відштовхуватись далі

UPD: не актуально, використовуємо []

kohutd commented 1 year ago

Я поки писав чернетку документації для цього подумав, що можна використовувати оператор виклику замість оператору доступу. Тобто робити щось таке:

числа = Список(1, 2, 3)

перше = числа(0) ;; 1
третє = числа(2) ;; 3

Мова надає таку можливість.

UPD: не актуально, використовуємо []

kohutd commented 1 year ago

Список втілено в такому вигляді: https://мавка.укр/docs/lists

Залишилось дописати дії для керування ним.

kohutd commented 1 year ago

ChatGPT згенерував таку табличку з діями для списку. Переклад не ідеальний, але деякі дії добре звучать. Треба буде пройтись по табличці і перекласти те що виглядає недобре. І перевірити як воно буде читатись на реальних задачах.

Method Name Translated Name
concat злиття
copyWithin копіювати_в_себе
entries елементи
every кожен
fill заповнити
filter фільтр
find знайти
findIndex знайти_індекс
flat вирівняти
flatMap вирівняти_та_застосувати
forEach для_кожного
from створити_з
includes містить
indexOf індекс_елемента
join зʼєднати
keys ключі
lastIndexOf індекс_останнього_елемента
map картувати
pop видалити_останній
push додати_останній
reduce зменшити
reduceRight зменшити_з_кінця
reverse обернути
shift видалити_перший
slice зріз
some хоча_б_один
sort сортувати
splice видалити_та_додати
unshift додати_перший
values значення
artiekra commented 1 year ago

16 Додаткові функції до списків

kohutd commented 1 year ago

До списку додано базові необхідні дії для роботи.

Закриваю це issue. Якщо є пропозиції, що до списку ще можна додати, прохання створити нове issue.