1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #go #article

Как в Go при помощи линтера решается проблема, которая в других языках решается проверкой типов.

blog.tomarrell.com/post/introducing_wrapcheck_linter_for_go
Не «пишу говнокод», а «провожу альтернативный рефакторинг»
Привет, я подсяду? Спасибо.

Почему у меня на рюкзаке шестерёнка? Ну, просто мне понравилась шестерёнка.

Поддерживаю ли я Rust? Да.

Да, я являюсь частью сообщества. А почему ты спрашиваешь?

В смысле навязываю тебе что-то? Так ты же сам спросил. Ладно.

Хочу ли я переписать всё на Rust? Боже, нет, конечно. Почему я должен это хотеть?

В смысле санитайзеры делают Rust ненужным? Нет, постой, это не так работает немножко. Тебе объяснить?

Не надо пропагандировать? Я не пропагандирую, ты просто сам спросил у меня… Ясно, я сумасшедший. Как и все. Ладно, извини, что потревожил. Я отсяду.
Forwarded from [email protected]
:smekalka:
Блог* pinned «#prog #rust #article #моё Как я и обещал, я... Так, погодите, я не писал об этом в блоге? Впрочем, ладно, напишу сейчас: я планировал написать перевод этой статьи и выложить его на Хабре. Собственно, сегодня я это и сделал.»
#prog

Я подозревал, что есть относительно общий метод для того, чтобы доказать, что имеющийся алгоритм решения задачи является оптимальным. Оказывается, такой метод действительно есть (до которого я бы сам не додумался): charging argument (нет, я не знаю, как это перевести)
Forwarded from rusta::mann
В 2019 из компилятора Rust выпилили синтаксические плагины, и с тех пор в области интроспекции типчиков в мета-коде царит нищета: процедурные макросы, которые сейчас есть, мапят потоки токенов и имеют доступ только к маленькой части AST.

С тех пор никаких подвижек в стабилизации доступа к полноценному AST и compiler queries не было, что в целом понятно — утилиты, которые используют внутренние API rustc, периодически ломаются.

Но тем не менее, в ночниках доступен rustc_interface, с помощью которого можно наворачивать кастомные утилиты, которые используют компилятор для анализа кода (как, например, clippy или rustfmt).

И если на время проигнорировать нестабильность и ад поддержки совместимости таких штук с ночником, то rustc_interface в частности, и доступ к приватным API компилятора в целом, дает возможность писать "гибридные" макросы в build.rs.

Когда-нибудь я может быть даже напишу прототип :))

#мысливслух #rustlang
#prog #haskell #article

Многие паттерны по факту не ограничены Haskell.
Прекрасная статья (с упражнениями!) от Вероники Ромашкиной и Дмитрия Кованикова:
https://kowainik.github.io/posts/haskell-mini-patterns
#prog #parsing #regex #article (строго говоря, не про разбор, а про распознавание, но всё же)

Можно ли подсчитать производную от регулярного выражения? Можно и нужно!
Статья рассказывает о изученной и эффективной, но почему-то мало известной на практике технике построения распознающих конечных автоматов непосредственно из регулярных выражений. К сожалению, в статье рассматривается лишь задача о соответствии регулярного тексту, в ней ничего не говорится о, скажем, захвате соответствующих частей текста.

"In this paper, we have presented RE derivatives, which are an old, but largely forgotten, technique for constructing DFAs directly from REs. Our experience has been that RE derivatives are a superior technique for generating scanners from REs and they should be in the toolkit of any programmer. Specifically, RE derivatives have the following advantages:
• They provide a direct RE to DFA translation that is well suited to implementation in functional languages.
• They support extended REs almost for free.
• The generated scanners are often optimal in the number of states and are uniformly better than those produced by previous tools.
In addition to presenting the basic RE to DFA algorithm, we have also discussed a number of practical issues related to implementing a scanner generator that is based on RE derivatives, including supporting large character sets"

www.ccs.neu.edu/home/turon/re-deriv.pdf