BenNeden ListT monad transformer buggy'yi ele alıyor - hangi monad yasalarını ihlal ediyor?
ListT
monad laws tatmin etmeyen bir arabası monad trafonun klasik bir örneğidir dile görüldü ettik.
Bu basit bir örnekle gösterilebilir mi?
Düzenleme:ListT []
ile Benim fikrim biraz yanlış, ben documentation değişmeli olarak iç monad gerektirdiğini kaçırdı. Yani, bu ihtiyacı olan anlamda ListT
buggy mi, yoksa başka bir sorun mu var? (examples at Haskell wiki her ListT IO
kullanımı ve IO
açıkça değişmeli değildir.)
Belgeler, dönüştürülen monadın değişmeli olması gerektiğini söylüyor; bunu ör. 'v n = ListT $ haritası (read :: String -> Int). permütasyonlar. göstermek . (+ n) ' – applicative
@applicative İyi nokta, bunu özledim. Ben (->) monad ile denedim, ama şimdiye kadar bir karşı örnek bulamadım. –
Eh ... "değişmeyen monad transformatörleri" değil, "monad transformatörler" olarak adlandırılırlar. Bir kaç spesifik monoya uygulandığında sadece doğru bir şekilde çalışan bir transformatör tanımlasaydım, bunu tatmin ediciydi mi? –