Rust soundness
Каждый раз, когда я сталкиваюсь с маленькими "но" в Rust'е, это ощущение тщательной продуманности. Например, простейшие fold-функции для итераторов: sum, min, max, any. Например, что должен вернуть max для пустого списка?
В питоне? Enjoy your ValueError exception.
В Rust'е? Max возвращает Some с результатом. Или None (который вариант от Option, а не абстрактный синглтон None).
В питоне? Enjoy your ValueError exception.
В Rust'е? Max возвращает Some с результатом. Или None (который вариант от Option, а не абстрактный синглтон None).
no subject
fold-функция должна на пустом списке возвращать нейтральный элемент соответствующей ассоциативной бинарной операции. sum — + — 0, product — * — 1, concat — + — пустая строка, any — or — false, all — and — true, min — meet — +∞ или максимальное представимое значение типа, max — join — −∞ или минимальное представимое значение.
(А если мы не на решётке, то у нас будут проблемы с определением минимума/максимума и на непустых последовательностях.)
(no subject)
(no subject)
(no subject)
no subject
Занятная тема. Вот тут разъясняют, почему можно сумму по-всякому определить.
И тогда мне непонятно, откуда это расту известно, что sum на моноиде определен, а min и max на полугруппе?