Forwarded from мне не нравится реальность (вафель 🧇🍓)
Ни дня не проходит, чтобы я не наткнулся на какое-нибудь issue, которое рассказывает о том, что в расте есть что-то фундаментально сломанное.
"loop {} — unsound"[1], "async и генераторы unsound"[2], "set_env всё ломает"[3], "бесконечная рекурсия мис компилится"[4], "noalias сломан. нет, я имею в виду всё ещё сломан"[5], [...]
[1]: #28728 (fixed)
[2]: #63818
[3]: [internals]
[4]: #85742
[5]: #84958
Как же страшно жить... Если кто-то хочет потерять всякую надежду, то вот список
"loop {} — unsound"[1], "async и генераторы unsound"[2], "set_env всё ломает"[3], "бесконечная рекурсия мис компилится"[4], "noalias сломан. нет, я имею в виду всё ещё сломан"[5], [...]
[1]: #28728 (fixed)
[2]: #63818
[3]: [internals]
[4]: #85742
[5]: #84958
Как же страшно жить... Если кто-то хочет потерять всякую надежду, то вот список
I-unsound
и не requires-nightly
issue в расторепе: [link]
мне не нравится реальность
Ни дня не проходит, чтобы я не наткнулся на какое-нибудь issue, которое рассказывает о том, что в расте есть что-то фундаментально сломанное. "loop {} — unsound"[1], "async и генераторы unsound"[2], "set_env всё ломает"[3], "бесконечная рекурсия мис компилится"[4]…
Telegram
Mike Lubinéts in Чат* (контрреволюционный)
noalias это трагикомедия в множестве актов
Forwarded from Life of Tau
Life of Tau
Питоновские generator expressions, list comprehensions и так далее довольно легко переносятся на Rust, например: Python: (i ** 2 for i in range(100) if i % 2 == 0) Rust: (0..100u16).filter_map(|i| (i % 2 == 0).then(|| i.pow(2))) #prog #python #rust
#prog #rust #python #rustlib
Настолько, что есть библиотека для list/hashmap comprehension на Rust:
Настолько, что есть библиотека для list/hashmap comprehension на Rust:
let squares = c![x*x, for x in 0..10];
let even_squares = c![x*x, for x in 0..10, if x % 2 == 0];
let squares_hashmap = c!{key => key*key, for key in 0..10};
Upd: если что, мне не нравится синтаксис питона для этих вещейdocs.rs
cute - Rust
API documentation for the Rust `cute` crate.
Forwarded from Strawberry Memories 🍓 (вафель 🧇🍓)
Forwarded from
LGBT stands for:
L: Linear types
G: GADTs
B: Bang patterns
T: TemplateHaskell
L: Linear types
G: GADTs
B: Bang patterns
T: TemplateHaskell
Что делает @insert_reference_here, когда у него освобождается свободное время в выходные? Ну разумеется решает заковыристую задачку с лайфтаймами с работы.
#prog #haskell #article
Статья (бесстыдно стыренная с Haskell wiki) о дизайне и разработке библиотеки для красивого вывода (pretty printing) выражений.
В данной работе автор решает формализовать красивый вывод, как вывод, удовлетворяющий трём принципам (в порядке убывания важности):
1. Видимость — весь вывод должен умещаться в пределах указанной ширины.
2. Разборчивость — в выводе должна быть видна иерархичная структура данных.
3. Бережливость — вывод должен занимать как можно меньше строк.
Данная библиотека отнюдь не первая, решающая эту задачу, поэтому автор также вскользь касается прошлых библиотек — и замечает, что, ввиду использования жадных подходов, они не дают вышеозначенные свойства.
Автор сначала строит наивный алгоритм, фактически строящий все возможные варианты и выбирающий среди них наилучший — и потому ожидаемо имеющий экспоненциальное время работы — а затем вводит две оптимизации, радикально снижающие время работы за счёт раннего отбрасывания заведомо негодных вариантов. Для обеих оптимизаций автор приводит доказательства их корректности.
Разумеется, автор также проводит замеры производительности библиотеки. Эмпирические результаты показывают, что время, потраченное на вычисления оптимальной раскладки, линейно пропорционально числу строк в итоговом выводе. К сожалению, автор не даёт строгого доказательства линейности данного алгоритма, ограничиваясь правдоподобными рассуждениями (а жаль, я бы почитал).
Сравнение с прошлыми библиотеками показывает, что библиотека автора работает примерно на порядок медленнее state of art на тот момент, что автор считает удовлетворительным с учётом того, что эта библиотека, в отличие от предыдущих, достигает оптимальности раскладки согласно принципам выше.
Статья (бесстыдно стыренная с Haskell wiki) о дизайне и разработке библиотеки для красивого вывода (pretty printing) выражений.
В данной работе автор решает формализовать красивый вывод, как вывод, удовлетворяющий трём принципам (в порядке убывания важности):
1. Видимость — весь вывод должен умещаться в пределах указанной ширины.
2. Разборчивость — в выводе должна быть видна иерархичная структура данных.
3. Бережливость — вывод должен занимать как можно меньше строк.
Данная библиотека отнюдь не первая, решающая эту задачу, поэтому автор также вскользь касается прошлых библиотек — и замечает, что, ввиду использования жадных подходов, они не дают вышеозначенные свойства.
Автор сначала строит наивный алгоритм, фактически строящий все возможные варианты и выбирающий среди них наилучший — и потому ожидаемо имеющий экспоненциальное время работы — а затем вводит две оптимизации, радикально снижающие время работы за счёт раннего отбрасывания заведомо негодных вариантов. Для обеих оптимизаций автор приводит доказательства их корректности.
Разумеется, автор также проводит замеры производительности библиотеки. Эмпирические результаты показывают, что время, потраченное на вычисления оптимальной раскладки, линейно пропорционально числу строк в итоговом выводе. К сожалению, автор не даёт строгого доказательства линейности данного алгоритма, ограничиваясь правдоподобными рассуждениями (а жаль, я бы почитал).
Сравнение с прошлыми библиотеками показывает, что библиотека автора работает примерно на порядок медленнее state of art на тот момент, что автор считает удовлетворительным с учётом того, что эта библиотека, в отличие от предыдущих, достигает оптимальности раскладки согласно принципам выше.