gavr_sas
166 subscribers
2.45K photos
164 videos
24 files
733 links
JB пропаганда
Download Telegram
новый продукт JB Git Client, название еще не придумали
пока закрытая превью, регистрация уже закрылась тк кк все побежали
https://lp.jetbrains.com/closed-preview-for-jetbrains-git-client/
> Sorry, demand was higher than anticipated and the team is already getting tons of feedback.

А все пошло от просьб юзверов 9 лет назад https://youtrack.jetbrains.com/issue/IJPL-72504#focus=Change-27-12294721.0-0.pinned

ну кста рили, я вот разрабатываю на своем яп в vsc(потому что lsp) но когда нужен гит открываю тот же проект в идее
👍21
я узнал что существует банановый сироп, и можно просить добавить его в кофя
жизнь прошла не зря
А как резолвить body функций у которых должен быть выведен return type?

допустим ситуация
fun main() {
sas()
}

fun sas() = 42


шо делать как быть:
1) мы не можем заранее пройдясь по всем функциям узнать точные их сигнатуры, ведь они не полные
2) мы не можем просто начать резолвить тела в рандомном порядке, ведь может встретится экспрешон с вызовом еще не зарезолвленной функции

Решения два три,
1 Топологическая сортировка: попробовать сначала построить граф зависимостей между функциями и отсортировать его топологически, сначала резолвя функции без зависимостей итд
Сложно реализуется
Не поддерживает mutually recursive функцайки a -> b -> c -> a, короче сасать

2 Lazy резолвинг, обязательное условие - наличие точки входа(а что делать с либами?)

Имеем 2 структуры,
резолвнутое to Type
Стек того что резолвим се

короч не важно, суть что идем резолвить то что видим, увидили вызов sas, проверили что еще не резолвнут, резолвнули, а по стаку мы можем понять что не попали в ловушку a вызывает б а б вызывает а
gavr_sas
А как резолвить body функций у которых должен быть выведен return type? допустим ситуация fun main() { sas() } fun sas() = 42 шо делать как быть: 1) мы не можем заранее пройдясь по всем функциям узнать точные их сигнатуры, ведь они не полные 2) мы не…
3 самый ахуенный наш любимый ХиндиМинди ^_^

Hindley–Milner
1) собираем все декларации функций переменных в одну бог шлепа структуру, обычно изза этого в таких языках есть жесткое требование к определению до использования F# OCalm(форвард декларейшон как в С)

2) Присваиваем переменным воображаемые временные типы, аля тайп холы ⭕️ t0 t1 t2...

3) Генерим уравления/ограничения, исходя из контекста, например обычно в H&M нет перегрузки операторов, и + всегда означает 2 числа, из этого можно легко вывезти 2 любых t1 + t2, еще простой пример fun f(x), f(y), => x == y, аля аргумент должен быть того же типа что параметр функции

4) Унификация, ну это я уже выше описал по сути, решаем все ети уровнения, если решение найти невозможно — выдаем ошибку типа
очень конкретная схема развития любого програмиста
(за спам извени)
This media is not supported in your browser
VIEW IN TELEGRAM
идеи древних java людей
👏3
компухтар с подписью we used to be a proper profession
💋1
вот всегда бы так
Таких треугольников много, но эти конкретные 6 треугольников мои, мои треугольники — мои лучшие друзья, я должен научится владеть ими также как я владею своей жизнью
constexpr может быть как runtime так и ct
consteval is ct only

сука, это помойму какой то апогей дизайна, понятно что хуже только perl, но все же, назвать штуки практически наоборот
😨1
- Jai: make_directory_if_it_does_not_exist

I fully support that
👍3
Forwarded from kolpotraż bananów
C++ exists to create jobs and keep dumbasses away from money.
🔥2
неочевидная весщъ

вот казалось бы функции и функции
аннет, вторая здесь это топ левел константное значение, аргументов то нет!

а как же сделать все таки функцию, не принимающую аргументов

а надо обернуть все тело в лямбду и добавить один фальшифый _ аргумент, теперь это как бы переменная-лямблда поэтому ее можно вызывать как функцию без аргументов

либо еще один вариант, в комментариях
4
Forwarded from gavr
а нахуя тогда мне эта информация?
💯3
Forwarded from GNOME News
This media is not supported in your browser
VIEW IN TELEGRAM
Джулиан Спарбер делится рабочим прототипом мерж реквеста для поддержки нескольких курсоров в Reflection (ранее Aardvark), локального текстового редактора для GNOME.
🤣2👍1
прохид заборонено
😨4