Gdy utworzysz synonim typu z type
, ghc/ghci użyje go zamiast oryginalnego typu, gdy zostanie użyty jawnie, ale nigdy nie będzie próbował cofać się od typu wywnioskowanego do zgodnego synonimu. Uzyskanie najbardziej "abstrakcyjnego" synonimu dla danego typu byłoby bardzo przydatne do nauki skomplikowanych aplikacji i bibliotek, które definiują synonimy monadowych stosów i prawdopodobnie synonimów synonimów.Czy istnieje sposób na rozwiązanie synonimów typu w haskell?
Czy ktoś napisał taki fragment kodu? Wyobrażam sobie, że byłoby to wycofanie i wygenerowałoby to również fałszywych kandydatów (np. Jeśli dwa typy są aliasami Stringa, to obie będą kandydatami, gdy tylko String musi zostać rozwiązany), ale może być użyteczne w pewnych sytuacjach.
Bawiłem się z tym samym pomysłem, ponieważ byłoby to bardzo przydatne w przypadku "rur" i "obiektywu". Idealnie byś określił jakąś kompilatorową pragmę, która działa jak reguła, dopasowując wzorzec w wywnioskowanym typie i przepisując go na równoważny synonim typu (z pewnym rodzajem pierwszeństwa, jeśli istnieje wiele dopasowań). –
Przypomina mi się wpis na blogu, który przeczytałem kilka dni temu, który wspomniał o "sygnaturach typu Chthulu": http://joelt.io/entries/yesod-in-production – BruceBerry
brzmi jak coś dobrego dla gsoc lub podobnego – jozefg