scalazKleisli[M[_], A, B]
, A => M[B]
kodlu bir sarıcı olup, bu tür işlevlerin bileşimini sağlar. Örneğin, M[_]
monad ise Kleisli[M, A, C]
almak için >=>
ile Kleisli[M, A, B]
ve Kleisli[M, B, C]
yazabilirim. Özetle, Kleisli
, M
belgesine bağlı olarak andThens
filiki sağlar. Doğru mu ? Kleisli
'u kullanmanın başka yararları var mı?Scalaz Kleisli kullanım avantajları
6
A
cevap
9
Örnek olarak iki avantaj vardır — Eminim başkalarıyla gelebilirsiniz. İlk olarak, Kleisli[M, ?, ?]
ve ? => ?
gibi farklı oklar üzerinde soyutlamak yararlı olabilir. Örneğin, bir endomorfizmi belirli sayıda uygulayacak bir genel işlev yazabilirim.
def applyX10[Arr[_, _]: Category, A](f: Arr[A, A]) =
List.fill(10)(Endomorphic(f)).suml
Şimdi bunu ör. Int => Int
veya Kleisli[Option, Int, Int]
:
val f = (_: Int) + 1
val k = Kleisli.kleisli[Option, Int, Int] {
case i if i % 2 == 0 => Some(i * 3)
case _ => None
}
Ve sonra: (. A =?> B
Kleisli[Option, A, B]
için sadece bir takma olduğunu unutmayın)
scala> applyX10(f).run(1)
res0: Int = 11
scala> applyX10[=?>, Int](k).run(2)
res1: Option[Int] = Some(118098)
İkincisi, F
yaparsa Kleisli[F, ?, ?]
bir monad örneğini olması, ayrıca yararlı olabilir. ReaderT
ile monadik kompozisyonu nasıl kullanabileceğinizi gösteren bir örnek için my answer here'a bakın, bu sadece Kleisli
için bir takma addır.
İlgili konular
- 1. Kleisli
- 2. Kleisli [Future, Context, \ /] to Kleisli [EitherT, Bağlam,…]
- 3. Scalaz
- 4. Scalaz
- 5. scalaz endo fonksiyonu scalaz olarak
- 6. Kleisli kompozisyonunu Validations döndüren işlevlerle nasıl kullanabilirim?
- 7. | @ | ile doğrulama kullanımı Scalaz içinde
- 8. Temel Scalaz Eyalet soru
- 9. Scalaz Lens Kompozisyonu
- 10. scalaz Monad kullanarak örnek
- 11. GeForce üzerinden Tesla'nın Avantajları
- 12. Scala'nın tip sisteminin avantajları
- 13. Hadoop'ta NullWritable kullanmanın avantajları
- 14. JavaScript - Nesne hazırlamasının avantajları
- 15. Java Klonlama'nın Avantajları
- 16. JSON üzerinden Parcelable'ın Avantajları
- 17. Self.attribute vs @attribute'un avantajları?
- 18. Düzleştirici İç içe Scalaz Değerlemeler
- 19. Scalaz state monad'ı anlamaya çalışmak
- 20. Harita üzerinde Scalaz Doğrulama hatası
- 21. Biriken sadece doğrulama hataları Scalaz
- 22. Iterator scalaz stream nasıl dönüştürülür?
- 23. Kullanım
- 24. Kullanım
- 25. 64 bit işlemcinin avantajları nelerdir?
- 26. Başlatıcı listesini kullanmanın avantajları nelerdir?
- 27. NLTK'de kendi corpus oluşturmanın avantajları
- 28. "Yapılandırıcı" ayarının "prototip" özelliğindeki avantajları
- 29. CTE kullanmanın avantajları/dezavantajları nelerdir?
- 30. Inline Javascript kullanmanın avantajları nelerdir?
Teşekkürler. Ben aşağıdaki gibi _grok_ için çalışacağız: (1) '' Kleisli' genel olarak farklı oklar (2) özel durumlar üzerinde bir soyutlama olarak: ör. ReaderT, okuyucu monad, vb. – Michael
Eh, bir monad 'M',' Kleisli [M,?,?] '_an_ ok. –
Anladım. Teşekkür ederim, – Michael