Anonymous 11/29/2020 (Sun) 14:41:14 No.8163 del
(5.77 KB 456x85 goblet.png)
(3.46 KB 249x316 mug.png)
Ох, ну и пасту я написал...

Добавил поддержку мултисравнения.
В Лайси можно сравнивать между собой сразу несколько значений. То есть a < b < c d эквивалентно (a < b) && (b < c) && (c d).

Кстати, у меня в коде компилятора сделаны как бы ленивые вычисления не путайте, это не ленивые вычисления языка. В Лайси инструкции исполняются там, где программист написал. Не вижу смысла в реальных ленивых вычислениях. Он не считает 5 + 3, раз результат некуда записать, но когда он приравнивается в переменную, то начинает проходиться по всему выражению. Это можно увидеть в том, что в "байткоде" сначала вычисляется 3 > 1, а потом 5 > 3, а не наоборот.

Помню раньше я рвался писать Лайси-библиотеки, но компилятор совсем не был готов, я даже простые выражения не мог компилировать. Теперь ситуация получше, но библиотеки не очень хочется писать. Надеюсь, я не перегорю.
Задумал целую абстрагированную инфраструктуру по производству программ на Лайси.
В самом корне идёт Лайси как язык программирования, ниже (или выше, главное — дальше) идёт либлайси-библиотека. В эту библиотеку я собираюсь засунуть некоторые функции, такие как max, min, clamp, bigendian, littleendian, floor, round, ceil, другие и функции по управлению памятью, а так же по выводу ошибки после assert.
Затем идут библиотеки по работе с памятью и математикой. mem и math. mem включает в себя н-мерный тензор, в который можно аппендить, инсертить элементы или решейпить его дименшионы. Записывать и читать значения элементов по индексам, опционально флоатскому индексу, интерполируя значения по заданной функции; всякие ассоциативные массивы типа деревьев и хеш-таблицы и ещё чего-то. Возможно тут будут такие функции как startswith, endswith, split и всякие другие, функции для взаимодействия со строками и их разбиения, сращивания, сравнения. Но может быть это будет в liblaisi. У меня тут коды перемешались.
math это библиотека для всяких разных численных методов, но не математических движков. То есть синусы, косинусы, факториалы, умножения матриц, комплексных чисел, но не дифференцирование или интегрирование функций.