Ich habe kürzlich -XTypeApplications
entdeckt, was mir erlaubt, meinen Code zu schreiben. Berücksichtigen Sie Folgendes:
anstatt proxy foo (Proxy::Proxy 'True)
zu schreiben, kann ich jetzt untag $ foo @'True
schreiben, was mir eine Menge Proxy
boilerplate erspart. Das ist in Ordnung, aber wir können besser mit mehrdeutigen Typen umgehen:
Jetzt Ich kann foo' @'True
schreiben! Beachten Sie, dass der Typ zwar vor -XTypeApplications
mehrdeutig war, aber nicht mehr, da ich den Typ a
angeben kann. Ich denke, das ist ziemlich gut, aber andere nicht. Also hatte ich gehofft, einen Wrapper einzuführen.
(noch allgemeiner in meinem tatsächlichen Anwendungsfall, aber das bringt den Punkt über), so dass Benutzer -XTypeApplications
nicht benötigen. Wenn ich versuche, wrapAmbiguous
wie proxy (wrapAmbiguous foo') (Proxy::Proxy 'True)
zu verwenden, erhalte ich den Fehler
Es scheint mir, dass dies legal sein sollte, aber GHC kann anscheinend den Typ von foo'
mit forall (t :: Bool) (Foo t) => b
nicht vereinheitlichen. Gibt es eine Möglichkeit, meinen Wrapper zum Laufen zu bringen?