Napisałem o transformers
w niedawnym poście na blogu, a ktoś zapytał "do czego ludzie używają Control.Applicative.Lift"? Nie byłem w stanie odpowiedzieć na to pytanie, więc powtarzam pytanie do StackOverflow - do czego jest używany?Co to jest Control.Applicative.Lift przydatne?
Widzę jeden przykład użycia go w pakiecie, ale nie wydaje się być całkowicie w stanie przeanalizować, co robi. Czy ktoś zna jakieś inne przykłady na wolności?
Przypomina mi o rozszerzeniu półgrupy na monoid: rozszerza funkującego aplikatora-ale-bez-czysty na funktora aplikacyjnego. I to jest obfuskowane w obu przypadkach, ponieważ półgrupy/aplikacje-funktory-ale-bez-czyste nie są obecne w standardowej bibliotece. – dave4420
Jeśli masz jakiś homomorfizm aplikacyjny 'fug :: fu -> gu', to' '(f: +: g)' (gdzie ': +:' jest pointwise suma) może być aplikowany przez "trzymanie się lewej, chyba że fugujesz iść w prawo ". Podnoszenie jest szczególnym przypadkiem, w którym "f" jest początkowym aplikacyjnym, tj. Tożsamością, od której istnieje wyjątkowy homomorfizm do dowolnego innego. – pigworker
Trochę zajmiemy się analizą komentarza @ pigworker - ale po przeczytaniu http://comonad.com/reader/2012/abstracting-with-applicatives/comment-page-1/#comment-107128 w końcu to zignorowałem (i natychmiast go wykorzystaj!). Dzięki! – ocharles