Czasami biegnę do „funkcji”, który Haskell pasuje tylko instancji głowy, mianowicieCzy są jakieś rozszerzenia języka lub potomkowie Haskella, którzy preferują ekspresję, szczególnie w obsłudze instancji?
instance (a ~ NewDataTyp b) => C a
będzie teraz pasuje do jakiegokolwiek typu, czyli pisząc kolejną deklarację instancji C
w programie będzie jest błąd, nawet jeśli to nie może prawdopodobnie być konfliktem z powodu kontekstu a ~ NewDataTyp b
. Czasami pokonanie wymaga wiele wysiłku; Musiałem zrestrukturyzować setki linii kodu, aby uniknąć tego ograniczenia.
Czy są jakieś rozszerzenia językowe lub języki potomne (Curry? Agda?), Które zostały zaprojektowane z wyższym priorytetem dla ekspresji? To może potencjalnie poświęcić (a) otwartość świata typeclass (b) typowania wielomianowego czasu.
edit - dla zainteresowanych w pytaniu, strona ta może być także interesujące: http://www.haskell.org/haskellwiki/Future_of_Haskell
Zdejmowanie otwartym światem założenie prowadzi do [więcej problemów niż można się było spodziewać] (http://stackoverflow.com/questions/8728596/explicitly-import-instances/8731340#8731340). O ile mi wiadomo, jedynym sposobem na odzyskanie tego problemu jest dodanie pełnych typów zależnych i włączenie instancji 'Ord' używanej w typie' Set'. – ehird
Sprawdzanie typu Haskella nie jest wielomianem, ponieważ sprawdzanie typu HM jest (podwójnie) wykładnicze. – augustss
Nie jestem pewien, czy Chameleon miał takie przedłużenie. Wymaga on rozwiązania do rozwiązywania ograniczeń, ale nie widzę powodu, dla którego nie powinien on działać. – augustss