Size: a a a

2021 April 25

D

Danya in rust_offtopic
Что это за тип такой
источник

NL

Nick Linker in rust_offtopic
Если Хаскель умеешь читать, то самое простое объяснение это вот:

data Obj = forall a. (Show a) => Obj a

xs :: [Obj]
xs = [Obj 1, Obj "foo", Obj 'c']

doShow :: [Obj] -> String
doShow [] = ""
doShow ((Obj x):xs) = show x ++ doShow xs

То есть тип-параметр для алгебраического типа переносится в правую часть, так что определение
data Obj a = (Show a) => Obj a
становится
data Obj = forall a. (Show a) => Obj a
что эквивалентно
data Obj = (Show a) => exists a. Obj a
(если бы такое ключевое слово существовало), отсюда и название.
источник

D

Danya in rust_offtopic
Не, не очень умею читать)
источник

p

polunin.ai in rust_offtopic
Я вот умею читать но не понял
источник

NL

Nick Linker in rust_offtopic
У нормальных дженериков тип-параметр передаётся извне, клиентским кодом. У экзистеншиалов тип-параметр "заваривается" в само значение.
источник

C

Calculon in rust_offtopic
что значит заваривается
источник

C

Calculon in rust_offtopic
сварочники блин
источник

p

polunin.ai in rust_offtopic
Это называется dyn Any
источник

NL

Nick Linker in rust_offtopic
Становится частью так, что позже оторвать и определить тип-параметр уже невозможно
источник

C

Calculon in rust_offtopic
оторвать в рантайме?
источник

p

polunin.ai in rust_offtopic
В твоём случае dyn Show
источник

p

polunin.ai in rust_offtopic
Vec<Box<dyn Show>>
источник

NL

Nick Linker in rust_offtopic
В компайл-тайме невозможно совсем, в рантайме с помощью хаков кажется можно. Но я давно Хаскелем не занимался, не приведу пример.
источник

SP

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

NL

Nick Linker in rust_offtopic
Кек.

Ехал (void*) через (void*)
Видит (void*) - в (void*) (void*)
сунул (void*) (void*) в (void*)
(void*)(void*)(void*)(void*)
источник

SP

Stanislav Popov in rust_offtopic
не воид а def do(user)
источник

SP

Stanislav Popov in rust_offtopic
все очевидно же. юзер и юзер
источник

NL

Nick Linker in rust_offtopic
Кстати, сегодня же был второй день Ludum Dare. Там одна команда делала игру на Go. Я сел поиграть и в конце концов уронил её с паникой.
Горжусь собой 😎
источник

p

polunin.ai in rust_offtopic
Норм
источник

p

polunin.ai in rust_offtopic
Если бы там были тайпинги то было бы
user: Union[int, User, Admin, None]
источник