amarao: (Default)
[personal profile] amarao
Каждый раз, когда я сталкиваюсь с маленькими "но" в Rust'е, это ощущение тщательной продуманности. Например, простейшие fold-функции для итераторов: sum, min, max, any. Например, что должен вернуть max для пустого списка?

В питоне? Enjoy your ValueError exception.

В Rust'е? Max возвращает Some с результатом. Или None (который вариант от Option, а не абстрактный синглтон None).

Date: 2021-10-08 10:48 am (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

fold-функция должна на пустом списке возвращать нейтральный элемент соответствующей ассоциативной бинарной операции. sum — + — 0, product — * — 1, concat — + — пустая строка, any — or — false, all — and — true, min — meet — +∞ или максимальное представимое значение типа, max — join — −∞ или минимальное представимое значение.

(А если мы не на решётке, то у нас будут проблемы с определением минимума/максимума и на непустых последовательностях.)

Date: 2021-10-08 01:19 pm (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Насчёт того, что min должен возвращать type::MIN - возражу

А я этого и не говорил. Наоборот, min({}) = type::MAX, max({}) = type::MIN. Если билетов нет, то оптимальная цена — плюс бесконечность. Если кабачки никто не хочет брать, будем отдавать бесплатно.

Date: 2021-10-08 12:07 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Занятная тема. Вот тут разъясняют, почему можно сумму по-всякому определить.

И тогда мне непонятно, откуда это расту известно, что sum на моноиде определен, а min и max на полугруппе?

Profile

amarao: (Default)
amarao

August 2025

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 27th, 2025 06:19 pm
Powered by Dreamwidth Studios