Also habe ich eine Funktion apply :: proxy tf -> tf Int -> tf Int
, die einen Proxy übernimmt, der eine Typfamilie enthalten soll, und wendet Int auf diese Typfamilie an, um den Typ des zweiten Arguments und den Rückgabewert zu bestimmen.
Allerdings bekomme ich einige verwirrende Antworten von GHC.
test1
verweigert die Kompilierung mit GHC und spuckt diesen Fehler aus:
Verwirrend, indem man test1
auskommentiert und eine gebundene Bindung in test2
benutzt, macht GHC glücklich und alles ist in Ordnung. Kann mir jemand erklären, was hier vor sich geht?
Also habe ich eine Funktion
apply :: proxy tf -> tf Int -> tf Int
, die einen Proxy übernimmt, der eine Typfamilie enthalten soll
Sie können das nicht tun. Typfamilien müssen immer vollständig angewendet werden, wie die Typ-Synonyme, von denen sie eine Generalisierung sind. Eine Typvariable kann nie in eine untergesättigte Typfamilie instanziiert werden.
Es ist ein Fehler in GHC 7.8.3, dass Ihr Programm nicht bereits ab
abgelehnt wurde %Vor%Tags und Links haskell polymorphism type-families