Scala'da kendi anlama-anlama uyumlu monad'ları ve functor'larımı uygulamak istiyorum.Kendi anlama-anlama uyumlu scala monad'ınızı nasıl yapabilirsiniz?
Örnek olarak iki aptal monad alalım. Bir monad, harita veya düz harita oluşturabileceğiniz bir "Int" içeren bir devlet monadıdır. Başka monad alır
val maybe = IntMonad(5)
maybe flatMap(a => 3 * (a map (() => 2 * a)))
// returns IntMonad(30)
val func = FunctionMonad(() => println("foo"))
val fooBar = func map (() => println("bar"))
fooBar()
// foo
// bar
// returns Unit
örnek bazı hatalar olabilir ... şöyle fonksiyon oluşacağının, ancak fikir.
Bu iki farklı tipte Monad'ı Scala'da bir kavrayış içinde kullanabilmek istiyorum.
val myMonad = IntMonad(5)
for {
a <- myMonad
b <- a*2
c <- IntMonad(b*2)
} yield c
// returns IntMonad(20)
Ben Scala usta değilim, ama sizin için-anlama, gerçekten sadece bunun için map
ve flatMap
yöntemlerini tanımlamak için gereken içinde kullanılmak üzere bir tür için fikir
Kendi tanımlama yerine Scallaz Monad türü kullanmak daha iyi olurdu? –
'filter' api ayrıca monad öğelerinin" paketlenmesini "de gerektirir. Örneğin, Belki IEC'ye benzeyen bir BelkiAB'ı kullanırsanız, fakat bir “A sınıfı (a: İnt, b: İnt)” için filtre, (AB (a, b) <- maybAB için) yapmak için gereklidir. ' –