Ich bin neugierig auf die Einwände gegen implicit parameters in der Functional Pearl: Implicit Configurations Artikel von Kiselyov und Shan diskutiert.Sind implizite Parameter eine Schwierigkeit beim GHC?
Inline-Code (& bgr; -Reduzierung) bei Vorhandensein impliziter Parameter ist nicht vernünftig.
Wirklich? Ich würde erwarten, dass GHC in den gleichen Umfang wie der übergebene implizite Parameter eingebunden werden sollte, nein?
Ich glaube, ich ihr Einwand verstehen, dass:
ein Verhalten der Begriff kann sich ändern, wenn seine Unterschrift hinzugefügt, entfernt oder geändert werden.
GHC der Benutzerdokumentation erklärt, dass programers Pflege rund um polymorphic recursion und monomorphism restriction nehmen müssen. Ist das irgendwie ein Problem beim Inlining?
Ich vermute, dass diese polymorphe Rekursion Beispiel deckt, was sie bedeuten, indem sie "über implizite Parameter verallgemeinern"? Noch etwas? Ist die ReifiesStorable
Typenklasse von Data.Reflection wirklich eine vernünftige Lösung für diese Schwierigkeiten? Es deserialisiert scheinbar die gesamte implizite Datenstruktur bei jedem Zugriff, was für die Performance katastrophal klingt. Wir könnten zum Beispiel wollen, dass unsere implizite Information eine Cayley-Tabelle oder Zeichentabelle ist, die einen Gig von Ram belegt und während Millionen von algebraischen Operationen zugänglich sein muss.
Gibt es vielleicht eine bessere Lösung, die implizite Parameter verwendet, oder eine andere Technik, die der Compiler hinter den Kulissen leicht optimieren kann, während immer noch mehr über das Typsystem mit State-Threads oder was auch immer garantiert wird?
Ahh süß, so ist 'Data.Reflection' jetzt alles schwarze Magie. :) Gibt es einen Code oder Artikel, die Sie lesen möchten? 'Data.Reflection' macht jetzt schon mehr Sinn, wenn ich das Beispielverzeichnis bemerke. Ich sollte jedoch eine andere Sache auf 'Data.Tagged' und' Data.Proxy' lesen. –