Size: a a a

2021 April 11

MK

Maxim Koltsov in Haskell
Ну и инстанс тоже будет, видимо
источник

IO

I O in Haskell
Да, точно, они экспортируются и импортируются как обычно, только использовать как функцию нельзя
источник

IO

I O in Haskell
Ммм, теперь можно легально написать такое

module Foo ( Foo ( foo ), foo ) where

где одно селектор а другое нормальная функция, но при попытке импортировать

import Foo ( Foo ( foo ), foo )

будет
    
Ambiguous name ‘foo’ in import item. It could refer to:
     Foo.foo
     Foo.Foo(foo)
источник

h

hyperaccelerated dra... in Haskell
а разве нельзя просто указать import Foo ( Foo.Foo( foo ), Foo.foo), как и предлагает компилятор?
источник

IO

I O in Haskell
В том-то и дело что нельзя, будет

Bar.hs:5:27: error: Illegal qualified name in import item: Foo.foo
 |
5 | import Foo ( Foo ( foo ), Foo.foo )
источник

h

hyperaccelerated dra... in Haskell
грустно(
источник

к

кана in Haskell
в экспорте можно квалифицированные писать зато
источник
2021 April 12

IO

I O in Haskell
Правильно я понимаю что это баг гхц?

{-# LANGUAGE UndecidableInstances, UndecidableSuperClasses, ConstraintKinds, FlexibleInstances, GADTs, QuantifiedConstraints #-}

class c => Hold c
instance c => Hold c

data Dict c = c => Dict

anythingDict :: Dict c
anythingDict = go
 where
   go :: (Hold c => c) => Dict c
   go = Dict


Дает зацикленный словарь (8.10.4 и 9.0.1)

Rec {
$dHold_rxi :: forall {c :: Constraint}. Hold c
$dHold_rxi = $dHold_rxi
end Rec }

anythingDict :: forall (c :: Constraint). Dict c
anythingDict = \ (@c) -> Dict ($dHold_rxi `cast` <Co:2>)


Доки к UndecidableInstances и UndecidableSuperClasses говорят что они may result in non-termination of the typechecker, а про нонтерминэйшн в рантайме не говорят.
источник

IK

Ilya Kos in Haskell
Выглядит так, будто ты достаёшь инстанс из воздуха, и просто сам написал бесконечный цикл
источник

IK

Ilya Kos in Haskell
От бесконечных циклов в хаскеле тебя никто не защищает
источник

IO

I O in Haskell
От бесконечных циклов на терм-левеле да, а вот на уровне констрейнтов я такого не ожидал
источник

JS

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

IO

I O in Haskell
Короче просто зарепорчу, пусть там сами решают documentation issue это или баг
источник

AK

Aleksey Kislitsa in Haskell
Заинтересовался вопросом, шо такое ConstraintKinds, в hackage прописана ссылка на репозиторий, а там
This library is depricated in favor of my subhask library.

Это что значит? Использование данного экстеншина на свой страх и риск?
В репозитории последнее изменение лет 7 назад сделано.
Но в хакадже ограничения по base от 3 до 5 версий и пишут скачивался архив 19 раз за последний месяц, то есть используется оно
источник

к

кана in Haskell
экстеншен и либа не связаны
источник

к

кана in Haskell
экстеншен это фича компилятора а не либа
источник

к

кана in Haskell
https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/constraint_kind.html

поэтому и искать нужно в мане компилятора
источник

AK

Aleksey Kislitsa in Haskell
<del>Про экстеншин только в доке на компилятор смотреть инфу?</del>
И значит ли протухлость либы и существование экстеншина с таким же именем что функционал дибы был добавлен в компайлер как экстеншин?
источник

к

кана in Haskell
я честно говоря вообще ничего не знаю про эту либу и впервые слышу про нее
источник

к

кана in Haskell
ага, посмотрел, эта либа про совсем другое, и смысла в ней особого нет. Либа просто использовала экстеншен для решения одной из задач

почему автор назвал либу таким именем не очень понятно
источник