Ich schrieb über transformers
in einem aktuellen Blog-Post, und jemand fragte: "Was verwenden die Leute Control.Applicative.Lift für?" Ich war nicht in der Lage, dies zu beantworten, also echo ich die Frage StackOverflow - was istControl.Applicative.Lift
für verwendet?Was ist Control.Applicative.Lift nützlich für?
Ich sehe ein Beispiel davon im Paket zu verwenden, aber ich bin nicht ganz in der Lage zu analysieren, was es tut. Kennt jemand andere Beispiele in der Wildnis?
Es erinnert mich daran, eine Semigruppe zu einem Monoid zu erweitern: es erweitert einen anwendungsspezifischen Funktor, aber ohne Reine zu einem anwendungsbezogenen Funktor. Und dies ist in beiden Fällen verschleiert, da Semigruppen/Applikativ-Funktoren-aber-ohne-rein in der Standardbibliothek nicht vorhanden sind. – dave4420
Wenn Sie einen anwendbaren Homomorphismus 'fug :: fu -> gu 'haben, dann kann' (f: +: g) '(wobei': +: 'eine punktweise Summe ist) anwendungsfähig gemacht werden, indem Sie" links halten, wenn Sie nicht fugging haben. " nach rechts gehen ". Lift ist der Spezialfall, bei dem "f" die anfängliche Anwendung ist, d. H. Identität, von der es einen eindeutigen Homomorphismus zu jedem anderen gibt. – pigworker
Es hat ein gutes Stück der Analyse von @ Pigworker Kommentar - aber nach dem Lesen http://comonad.com/reader/2012/abstracting-with-applicatives/comment-page-1/#comment-107128 Ich habe endlich diese (und nutze sofort dafür!). Vielen Dank! – ocharles