Size: a a a

2020 June 10

G

Gymmasssorla in rust_offtopic
Soul
и еще неизвестно, это функция принимает а и возвращает функцию, которая принимает [a] и возвращает функцию, которая возвращает [a] или же ее предназначено понимать как функцию с двумя аргументами
Это не имеет значения
источник

S

Soul in rust_offtopic
Gymmasssorla
Это не имеет значения
для меня имеет, мне же как-то ее вызывать надо, как-то мыслить о ней
источник

SP

Stanislav Popov in rust_offtopic
Soul
для меня имеет, мне же как-то ее вызывать надо, как-то мыслить о ней
пока все аргументы не дал не вызвал
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
(<>) :: Semigroup a => a -> a -> a
ничем не отличается от жавовского yoba(int int int):int
Ок, теперь мысленный эксперимент, в чём разница между этой сигнатурой и сигнатурой wut :: a -> a -> a

Какое поведение будет у функции wut?
источник

DS

Doge Shibu in rust_offtopic
Сколько возможных реализаций у функции wut?
источник

S

Soul in rust_offtopic
Doge Shibu
Ну мы достаточно много свойств уже можем отсюда вывести.

Например, мы по сигнатуре знаем, что выходной список как минимум будет содержать подмножество элементов из входного списка и дополнительного элемента
Это буква а означает или любая буква? А если бы буквы были разные, то откуда бы бралась информация о буквах внутри типа возвращаемого значения?
источник

DS

Doge Shibu in rust_offtopic
Soul
Это буква а означает или любая буква? А если бы буквы были разные, то откуда бы бралась информация о буквах внутри типа возвращаемого значения?
a - это generic параметр
источник

S

Soul in rust_offtopic
Doge Shibu
Ок, теперь мысленный эксперимент, в чём разница между этой сигнатурой и сигнатурой wut :: a -> a -> a

Какое поведение будет у функции wut?
ну тут есть полурыбный оператор после Semigroup a, он может означать все что угодно
источник

S

Soul in rust_offtopic
это не рис с карри, который я знал
источник

SP

Stanislav Popov in rust_offtopic
Doge Shibu
Ок, теперь мысленный эксперимент, в чём разница между этой сигнатурой и сигнатурой wut :: a -> a -> a

Какое поведение будет у функции wut?
ээм любое вплоть до игнорирования всех аргументов кроме одного
источник

DS

Doge Shibu in rust_offtopic
Soul
ну тут есть полурыбный оператор после Semigroup a, он может означать все что угодно
Это значит, что для типа a определены функции из тайпкласса Semigroup
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
ээм любое вплоть до игнорирования всех аргументов кроме одного
У неё ровно 3 реализации, какие они
источник

SP

Stanislav Popov in rust_offtopic
Doge Shibu
У неё ровно 3 реализации, какие они
откуда ты это взял?
источник

DS

Doge Shibu in rust_offtopic
Если мы в safe подмножестве языка
источник

S

Soul in rust_offtopic
То есть если справа от сигнатуры Something weird поставить полурыбу, это значит что weird имеет методы типо класса Something?
источник

DS

Doge Shibu in rust_offtopic
Soul
То есть если справа от сигнатуры Something weird поставить полурыбу, это значит что weird имеет методы типо класса Something?
Да. Это как с трейтами в расте
источник

S

Soul in rust_offtopic
но почему полурыба справа, а не между термами, которые она связывает?
источник

S

Soul in rust_offtopic
я бы еще понял как в лиспе, если бы она слева стояла
источник

S

Soul in rust_offtopic
но тут какая-то арабская нотация
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
откуда ты это взял?
Параметричность.

Представим, что у нас тотальный, чистый язык и в нём определена та же функция, сколько там будет доступных реализаций?
источник