Size: a a a

2020 May 05

O

Orbarax in Haskell
но оно же само решит уравнение
источник

YS

Yan Shkurinskiy in Haskell
Но не думаю, что ты это не пробовал
источник

AV

Alexander Vershilov in Haskell
Что-то неинъективное надо
источник

O

Orbarax in Haskell
может сделать тайпкласс T s x | s -> x, потом f :: forall s.T s x => Params x и instance T v v ?
источник

AV

Alexander Vershilov in Haskell
может сделать:
type family Foo x :: *
type instance Foo x = x
источник

AV

Alexander Vershilov in Haskell
И надеяться, что GHC тупой и не вычислит?
источник

MK

Maxim Koltsov in Haskell
Alexander Vershilov
Хочу сделать так, чтобы тип проверялся, но при этом не выводился из конекста, т.е. так, чтобы функцию нужно было явно аннотировать типом. Как бы это сделать?

Можно было бы ввести обёртку f :: forall s  . Params x, тогда x будет выводиться из окружения, а s нужно будет фиксировать. Но мне в этом случае надо как-то проверять, что s=x.

Так что может есть идеи получше?
источник

AV

Alexander Vershilov in Haskell
type family Ambiguous (a :: k) :: j where
 Ambiguous x = x
источник

AV

Alexander Vershilov in Haskell
Кажется почти совпало с тем, что я предложил?
источник

MK

Maxim Koltsov in Haskell
Почти :)
источник

MK

Maxim Koltsov in Haskell
Насколько я понял, тут ключевой момент в том что кайнды разные
Из-за этого гхц не может ничего вывести
источник

MK

Maxim Koltsov in Haskell
Чонгор вообще крутой
источник

AV

Alexander Vershilov in Haskell
А у меня non-injective вариант
источник

AV

Alexander Vershilov in Haskell
GHC тоже должен сломаться
источник

MK

Maxim Koltsov in Haskell
А, из-за того что открытое семейство?
источник

AV

Alexander Vershilov in Haskell
Да, в этом идея, сейчас проверю конечно
источник

AV

Alexander Vershilov in Haskell
В ghci работает и не требует тега
источник

AV

Alexander Vershilov in Haskell
причем оба варианта работают
источник

к

кана in Haskell
такой вариант видел
источник

к

кана in Haskell
ну что-то похожее, я мог неверно воспроизвести
источник