Size: a a a

2021 February 03

YS

Yan Shkurinskiy in Haskell
Можно
источник

JS

Jerzy Syrowiecki in Haskell
Жук Короед
Товарищи, а можно ли как-то обойтись без Proxy и сделать вместо
foo :: MyClass a b => Proxy b -> a -> Bar
Вот так:
foo :: MyClass a b => a -> Bar?
Чтоб просто нужно было тип явно указывать при вызове, а не проксями бросаться
да, AAT + TA
источник

MK

Maxim Koltsov in Haskell
Атата
источник

JS

Jerzy Syrowiecki in Haskell
Жук Короед
Товарищи, а можно ли как-то обойтись без Proxy и сделать вместо
foo :: MyClass a b => Proxy b -> a -> Bar
Вот так:
foo :: MyClass a b => a -> Bar?
Чтоб просто нужно было тип явно указывать при вызове, а не проксями бросаться
пиши forall a b. в сигнатуре и дальше по подсказкам компилятора
источник

JS

Jerzy Syrowiecki in Haskell
Jerzy Syrowiecki
да, AAT + TA
Allow ambiguous types
источник

ЖК

Жук Короед in Haskell
А их можно как-нибудь локально разрешать, чтоб оно на весь код не расползалось?
источник

к

кана in Haskell
Жук Короед
Товарищи, а можно ли как-то обойтись без Proxy и сделать вместо
foo :: MyClass a b => Proxy b -> a -> Bar
Вот так:
foo :: MyClass a b => a -> Bar?
Чтоб просто нужно было тип явно указывать при вызове, а не проксями бросаться
удобнее всего сделать так

foo :: forall b a. MyClass a b => a -> Bar
x :: A
y = foo @B x
источник

JS

Jerzy Syrowiecki in Haskell
Жук Короед
А их можно как-нибудь локально разрешать, чтоб оно на весь код не расползалось?
локализуй в модуле
источник

к

кана in Haskell
Жук Короед
А их можно как-нибудь локально разрешать, чтоб оно на весь код не расползалось?
можно в модуле одном, но лучше везде, это расширение должно быть по дефолту включено везде имхо
источник

ЖК

Жук Короед in Haskell
Понял, спасибо.
источник

MK

Maxim Koltsov in Haskell
А они в 2021 попали?
источник

к

кана in Haskell
Жук Короед
Понял, спасибо.
если у тебя всегда по задумке может существовать ровно один инстанс MyClass a b для любых a, то можно сделать MyClass a b | a -> b и не указывать тип вообще никогда
источник

к

кана in Haskell
в ghc9 можно делать уже

g :: forall {a} b. A a b => a -> String

чтобы и лишний аргумент не указывать (и чтобы нельзя было указать в принципе), и не менять порядок
источник

к

кана in Haskell
Maxim Koltsov
А они в 2021 попали?
нет, абсолютно никто за него не проголосовал
источник

к

кана in Haskell
что как-то тупо, ведь TypeApplications попал
источник

к

кана in Haskell
а их в целом можно по юзкейсам за один экстеншен считать
источник

JS

Jerzy Syrowiecki in Haskell
ну нет, AAT всё-таки может скомпилировать и неправильный код.

у меня такое было. перемудрил с типами, компилятор предложил AAT, а надо было упростить
источник

JS

Jerzy Syrowiecki in Haskell
а TypeApplications точно безобидное
источник

KV

Kirill Valyavin in Haskell
AAT было бы намного лучше, если бы компилятор его не предлагал не по делу
источник
2021 February 04

ЖК

Жук Короед in Haskell
А почему убрали TypeApplications?
источник