Ошибки PascalABC.NET

Залил версию где есть обе функции. Будьте осторожны - передавать <= в качестве less нельзя

На githube системный модуль неактуальный

Залил

Спасибо. Да, меня эта проблема с <= что-то тоже смущала.

При том, что с точки зрения формальной математики более безопасно для подобных трюков использовать именно её а не <, так как одновременное выполнение x<=y и y<=x можно интерпретировать как x=y (даже если это не “строгое” равенство, а, например, равенство ключей в базе данных), а вот одновременное невыполнение x<y и y<x для каких-нибудь частично упорядоченных данных может включать не только равенство, но и случай несравнимых значений.

А что можно? Если бы примерчик…

Ваш пример теперь работает

Мой - да, а кто такой этот less ?

less - функция “меньше” от двух аргументов возвращающая логическое значение: x[0] < y[0]

Возможно это хорошая функция, но компилятор её принимать не захотел, пишет, что less ему незнакомо.

Вы о чём? Где в примере было “less”? less - имя параметра в процедуре sort стандартной библиотеки. В примере вместо него стоит конкретная функция используемая для сравнения “x[0]<y[0]”.

Вот тут. Стало быть, понял неверно. Т.е. там все же некое логическое выражение.

Там теперь и то и другое, смотрите в дистрибутиве LibSource\PABCSystem.pas

/// Сортирует динамический массив по критерию сортировки, задаваемому функцией сравнения cmp
procedure Sort<T>(a: array of T; cmp: (T,T)->integer);
/// Сортирует динамический массив по критерию сортировки, задаваемому функцией сравнения less
procedure Sort<T>(a: array of T; less: (T,T)->boolean);

На GitHub уже третья версия с номером 1363. Почти запутался.

Почему так можно добавить элемент к последовательности:

var sq := (0 + Range(1, 10)).Println;

А так нельзя:

var sq := (Range(1, 10) + 0).Println;

?

1 лайк

А так можно:

var sq := (Range(1, 10)+Sec(0)).Println;

Так мы находим “сумму” двух последовательностей, а не “сумму” последовательности и одного элемента. Это уже некий костыль получается…

Да понятно, что тут нарушена работа операции сложения…

Тогда несимметрично получается! В начало последовательности элемент добавить можно, а в конец нельзя. Нет логики…

Методы ToDictionary и ToLookup возвращают коллекции указанных типов, но компилятор их не узнаёт.

На GitHub уже изменили (два раза) и теперь работают оба варианта, но с номером ревизии опять какая-то путаница - она всё ещё 1367, так что не совсем понятно обновлён ли дистрибутив, а функция PascalABCVersion всё ещё выдаёт 1364. Извиняюсь за педантизм.