Vladimir
ты на русском ее пишешь?
Anton
конечно я ее еще буду редачить и сокращать но все равно дохуя
Anton
а сейчас чо, завтра надо по работе уже проект писать, сегодня выходной - пью пиво, курю кальян и пишу sdk байд для дизера
Loo
не нужно
Сережа
С гуи ты уже завязал?
Сережа
Мне что теперь дальше на куте говнокодить?
Alex
Сережа
Вообще я по серьезному вопросу, как мне в однострочнике из вектора структур взять из каждой структуры поле и передать в аргумент каждой другой структуры в векторе, который принадлежит изначально итерируемой структуре?
Сережа
Я конечно сделал через циклы, все работает, но это слишком императивно
Anton
Anton
просто статья еще в процессе
Anton
плюс я еще и пишу боилерплейт почище и попроще для новичков
Anton
статья расчитана на уровень овощей
Anton
нужно больше овощей в комьюнити
Anton
ибо овощи вершат историю
Anton
Сережа
То есть гуи фреймворк и не планировался? Планировалась статья?
Anton
блин недавно чот глянул на текствью компонент кьютов
Anton
господи какой же у qt охуенный апи для текст блоков
Anton
аж прослезился
Anton
Anton
с качественным боилерплейтом и спекой с бестпрактисом как компоновать удобно и просто
Vladimir
Vlad
Anonymous
ты так скучно всё описываешь, что даже не хочется читать что ты там хочешь
By now you should be pretty familiar with the definition of a monad as a monoid in the category of endofunctors. Let’s revisit this definition with the new understanding that the category of endofunctors is just one small hom-category of endo-1-cells in the bicategory Cat. We know it’s a monoidal category: the tensor product comes from the composition of endofunctors. A monoid is defined as an object in a monoidal category — here it will be an endofunctor T — together with two morphisms. Morphisms between endofunctors are natural transformations. One morphism maps the monoidal unit — the identity endofunctor — to T:
Anonymous
Vladimir
Anonymous
он тоже
Vlad
А я чё?
Anonymous
он альфа, всех задоминировал там!
Anonymous
моего лида склеил и стоял общался с ним, я аж ушел, чтобы им не мешать
Vlad
kitsu
а какое состояние оптимизаций компилера на всякие векторы? e.g sse/avx
Vlad
Vladimir
Anonymous
ни скажу, он мой!11 😠
Vladimir
doc
ОН СЕКСИ??!!
doc
колись и фотку в студию)
Сережа
А он знает что ты сидишь на канале про раст? Что ты функциональщик?
Сережа
У вас же ассемблерные вставки есть
Vladimir
у нас всё есть
Vladimir
кроме монад
Anonymous
завтипов еще тоже нету пока что
Сережа
И вакансий
Сережа
А типы высшего порядка?
Сережа
Чтобы из функции тип вернуть?
Сережа
Я не знаю, я этим не балуюсь
Anonymous
можно TypeId вернуть
Сережа
Там 3 закона каких-то, но чтобы их знать нужно быть девственником
Anonymous
что за законы?
Vladimir
че за фигню он мелит)
Vladimir
из функции тип вернуть можно
Anonymous
как?
Vladimir
ну tipeid
Vladimir
же
Vladimir
у нас же нет другой рефлексии
Anonymous
не очень полезно
Vladimir
ну учитывая, что рефлексия в статически типизированном языке - вообще сомнительная тема, то да
кана
Anonymous
пока что нету
кана
f : Bool -> Type
f True = String
f False = Nat
x : (b : Bool) -> f b
x True = "hello"
x False = 123
Vladimir
че такое завтипы
кана
зависимые типы, Dependent types
Vladimir
ясно
Vladimir
а оно нужно?
Vladimir
мне если честно слабо верится внедрения такого. Язык то строгой типизации. Не понятно как потом юзать такие функции.
А сейчас это в виде энамов и перекладывание на динамическую типизацию решается
кана
а оно нужно?
зависит от задачи конечно.
Фича расширяет возможности типизации безгранично. Пример, имеем функцию head, которая отдает голову списка. В хаскеле она отдает сам элемент или падает в рантайме, очень плохо, многие испльзуют другую реализацию, которая maybe отдает (оптионал), хорошо, но геморно
С зависимыми типами можно сделать тип Vector (n: Nat) (a: Type), то есть тип с двумя "генериками", первый - натуральное число (Z - 0, S Nat - инкремент, то есть S Z - 1, S (S Z) - 2). И потом описать функцию head : Vector (S k) a -> a, которая принимает только непустые вектора и ругается в компайлтайме. Это самый избитый пример, но он самый понятный)
Используется такая тема довольно часто в продакшене для верификации софта (а вот софт верифицируют не часто, всякие крипты), ведь зависимые типы полностью изоморфны интуицинистой логике и исчелению конструкций (в языках типа Coq, Lean, Agda?), то есть на этих языках можно писать теоремы (типы) и доказывать их (термы). Обычные математические теоремы.
На Coq сейчас формализуется одна ветвь современной математики HoTT.
Vladimir
раст язык для веба
Vladimir
там это не нужно
кана
ну это тоже зависит, может хочется как-то очень точно описать проткол, где тип одно поля зависит от значения друого)
кана
вот идрис в двух словах: типы - обычные значения, тип результата функции зависит от значения аргумента функции
кана
ну и тип второго элемента пары зависит от значения первого элемента пары
кана
типа такого:
значения
a = (True, 1)
и
b = (False, "hello")
выглядят как термы разных типов (в одном второй элемент - число, во втором - строка), но в идрисе это может быть один тип:
a, b : ((x : Bool), if x then Nat else String)
кана
собственно поэтому вывод типов в идрисе в общем случае невозможен
кана
самый простой пример использоавния - описание протокола, где первый байт отвечает за тип контента сообщения
Значения (False, 1) конечно быть не может, ошибка типизации, ожидается строка, получено число
кана
но ладно, пошел оффтоп, для интересующихся темой есть это - https://t.me/joinchat/AAAAAD9SWO_tLd7rJ9S7Ig