Size: a a a

2020 August 25

AV

Andrey Vlasov in rust_offtopic
Ты ж любишь про это говорить
источник

H

Hirrolot in rust_offtopic
Andrey Vlasov
Ты ж любишь про это говорить
В чатиках легко пиздеть
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
ну я говорил - хочется типчики как в тс. просто пишешь код который бы работал на типчиках. функции для типчиков, возврат чего то для типчиков - вот это было бы тру
Так ты можешь это делать. Тайплевел логика тут делается как обычно в языках с тайпклассами и ассоциированными типами
источник

SP

Stanislav Popov in rust_offtopic
Doge Shibu
Так ты можешь это делать. Тайплевел логика тут делается как обычно в языках с тайпклассами и ассоциированными типами
а есть ли статьи какието?
источник

SP

Stanislav Popov in rust_offtopic
ну, тоесть, кажется я готов
источник

H

Hirrolot in rust_offtopic
Stanislav Popov
а есть ли статьи какието?
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
а есть ли статьи какието?
Я в царечате писал же
источник

/

/bin/cat in rust_offtopic
Кстати, что касается рефлекса в макросах
источник

EG

Emmanuel Goldstein in rust_offtopic
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=a86e8b791079da6be925bbd493f5ce30
Во, вот этот пример работает, хотя выгллядит странно
источник

SP

Stanislav Popov in rust_offtopic
Doge Shibu
Я в царечате писал же
попробую поискать. не помнишь по каким примерно ключевым словам?

а вот нашел "тайплевел"
источник

/

/bin/cat in rust_offtopic
Никто не запрещает сделать одинаковые функции и дать компилятору выбор
источник

SP

Stanislav Popov in rust_offtopic
ну перечитаю. я признаться скипал тогда. потому что не был готов
источник

DS

Doge Shibu in rust_offtopic
Переслано от Doge Shibu
Общая идея в подобном подходе для тайплевела в том, что ты можешь тайплевел матч по типам моделировать таким образом:
// условный синтаксис из выдуманного языка: 
type MyType<X> = X match {
  case Int => Double,
  case SomeType => OtherType,
  ...
}


Транслирется руками вот в такую хрень:
trait MyType {
  type Output;
}

impl MyType for i32 {
 type Output = f64;
}

impl MyType for SomeType {
 type Output = OtherType;
}
источник

DS

Doge Shibu in rust_offtopic
источник

SP

Stanislav Popov in rust_offtopic
а да это помню но врубился только теперь
источник

SP

Stanislav Popov in rust_offtopic
спс
источник

DS

Doge Shibu in rust_offtopic
Переслано от Doge Shibu
И ты можешь похожим образом моделировать рекурсию некоторого рода. Т.е например, обход списка, как в тех примерах с HList'ом
источник

DS

Doge Shibu in rust_offtopic
Переслано от Doge Shibu
Где матч транслируется в трейт, а каждый кейс матча в инстанс, так, что левая часть кейса становится типом для котрого мы имплементим трейт, а правая часть становится ассоциированным типом.

Получается в итоге, что на уровне типов мы можем писать на каком-то очень-очен простом языьке, где есть только матчи и рекурсия, поэтому оно не так уж и удобно.
источник

EG

Emmanuel Goldstein in rust_offtopic
Чёт фуррифокс скатился
источник

EG

Emmanuel Goldstein in rust_offtopic
Уже на 250 вкладках отжирает всю раму
источник