1.84K subscribers
3.23K photos
127 videos
15 files
3.52K links
Блог со звёздочкой.

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

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

(thanks @aspirin_pp, пиши посты, блин)
Forwarded from Neural Machine
Не будь придурком, проси помощи
Forwarded from 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
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:

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: если что, мне не нравится синтаксис питона для этих вещей
Forwarded from Strawberry Memories 🍓 (вафель 🧇🍓)
#ph #pxl 2021-01-29 like a painting
Forwarded from Strawberry Memories 🍓 (вафель 🧇🍓)
#ph #pxl 2021-04-22 broken
Forwarded from 
LGBT stands for:

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 на тот момент, что автор считает удовлетворительным с учётом того, что эта библиотека, в отличие от предыдущих, достигает оптимальности раскладки согласно принципам выше.
#prog #rust #rustlib

state — библиотека для хранения глобального состояния, которое может быть инициализировано не в точке определения — глобальное как в рамках процесса целиком, так и привязанное к потоку (в смысле thread).

Дисклеймер в доках хорош:

When To Use

You should avoid using state as much as possible. Instead, thread state manually throughout your program when feasible.

Собственно, совет хорош, даже если понимать state буквально, а не как имя библиотеки.
Бгггг (#abnormalprogramming)

Introducing Scheme 2-D

Are you ever bored by other Lisp dialects? Do s-expressions feel flat and lifeless to you? Have you ever been worried you're not getting your money's worth out of the space bar on your keyboard?

Have we got the perfect programming language for you!

In ordinary Scheme, you'd write parenthesized lists of terms, which is so last decade! 🤢

(define (factorial x)       ; yuck!
(if (= x 0) 1 ; gross!
(* x (factorial (- x 1))))) ; homoiconic???

With Scheme 2-D, you can take your Scheme programs to the next level, with the power of the second dimension! 😎

        ^   ^           
<define f i> beautiful!
a f so aesthetic!
c look at those angles!
t <= x 0>
o
r 1
i ^
a <* x f>
l v a
c
x t
v o
r
i
a
l

<- x 1>
v

Gain full control over your syntax tree, and release your full 10xer potential by buying downloading Scheme 2-D for just $19.95 + S&H free today!
Блог*
#prog #go #rust #meme #моё
Но это всё, конечно, шутка, а на самом деле дело обстоит вот так