новый продукт 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) но когда нужен гит открываю тот же проект в идее
пока закрытая превью, регистрация уже закрылась тк кк все побежали
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) но когда нужен гит открываю тот же проект в идее
JetBrains: Developer Tools for Professionals and Teams
Git Client from JetBrains - Closed Preview
New Git Client by JetBrains - join the Closed Preview Program.
👍2❤1
я узнал что существует банановый сироп, и можно просить добавить его в кофя
жизнь прошла не зря
жизнь прошла не зря
А как резолвить body функций у которых должен быть выведен return type?
допустим ситуация
шо делать как быть:
1) мы не можем заранее пройдясь по всем функциям узнать точные их сигнатуры, ведь они не полные
2) мы не можем просто начать резолвить тела в рандомном порядке, ведь может встретится экспрешон с вызовом еще не зарезолвленной функции
Решениядва три,
1 Топологическая сортировка: попробовать сначала построить граф зависимостей между функциями и отсортировать его топологически, сначала резолвя функции без зависимостей итд
Сложно реализуется
Не поддерживает mutually recursive функцайки a -> b -> c -> a, короче сасать
2 Lazy резолвинг, обязательное условие - наличие точки входа(а что делать с либами?)
Имеем 2 структуры,
резолвнутое to Type
Стек того что резолвим се
короч не важно, суть что идем резолвить то что видим, увидили вызов sas, проверили что еще не резолвнут, резолвнули, а по стаку мы можем понять что не попали в ловушку a вызывает б а б вызывает а
допустим ситуация
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) Унификация, ну это я уже выше описал по сути, решаем все ети уровнения, если решение найти невозможно — выдаем ошибку типа
Hindley–Milner
1) собираем все декларации функций переменных в одну бог шлепа структуру, обычно изза этого в таких языках есть жесткое требование к определению до использования F# OCalm(форвард декларейшон как в С)
2) Присваиваем переменным воображаемые временные типы, аля тайп холы ⭕️ t0 t1 t2...
3) Генерим уравления/ограничения, исходя из контекста, например обычно в H&M нет перегрузки операторов, и + всегда означает 2 числа, из этого можно легко вывезти 2 любых t1 + t2, еще простой пример fun f(x), f(y), => x == y, аля аргумент должен быть того же типа что параметр функции
4) Унификация, ну это я уже выше описал по сути, решаем все ети уровнения, если решение найти невозможно — выдаем ошибку типа
gavr_sas
что будет если скрестить все механики интерстеллара и Довод а получится типичный марио спидран https://youtu.be/d45VMvi93tQ?t=981 серьезно это самый интересный разбор механик что я видел, литерали паралельные вселенные!
пересматриваю, все еще лучшее объяснение спидран техники
constexpr может быть как runtime так и ct
consteval is ct only
сука, это помойму какой то апогей дизайна, понятно что хуже только perl, но все же, назвать штуки практически наоборот
consteval is ct only
сука, это помойму какой то апогей дизайна, понятно что хуже только perl, но все же, назвать штуки практически наоборот
😨1
gavr_sas
Очередной уверенный сиподобный яп, на этот раз борроу чеккер, ннно в отличии от раста при фейле он просто подменяет рефернс смарт поинтером, помойму nim делает нечто очень похожее https://www.helix-lang.com/ 320 звездочек
Очередной уверенный сиподобный яп(как я их всех нинавижу), на этот раз для разнообразия никаких особенностей
https://deen-docs.vercel.app/
https://github.com/mealet/deen
https://deen-docs.vercel.app/
https://github.com/mealet/deen
😁2
Forwarded from kolpotraż bananów
C++ exists to create jobs and keep dumbasses away from money.
🔥2
неочевидная весщъ
вот казалось бы функции и функции
аннет, вторая здесь это топ левел константное значение, аргументов то нет!
а как же сделать все таки функцию, не принимающую аргументов
а надо обернуть все тело в лямбду и добавить один фальшифый _ аргумент, теперь это как бы переменная-лямблда поэтому ее можно вызывать как функцию без аргументов
либо еще один вариант, в комментариях
вот казалось бы функции и функции
аннет, вторая здесь это топ левел константное значение, аргументов то нет!
а как же сделать все таки функцию, не принимающую аргументов
а надо обернуть все тело в лямбду и добавить один фальшифый _ аргумент, теперь это как бы переменная-лямблда поэтому ее можно вызывать как функцию без аргументов
либо еще один вариант, в комментариях
❤4
Forwarded from GNOME News
This media is not supported in your browser
VIEW IN TELEGRAM
Джулиан Спарбер делится рабочим прототипом мерж реквеста для поддержки нескольких курсоров в Reflection (ранее Aardvark), локального текстового редактора для GNOME.
🤣2👍1