Jeneratörün bir örneğini içeren bir Jeneratör kombinasyonunun (örneğin, ScalaCheck veya Haskell'in QuickCheck'lerindekine benzer) bir Jeneratör birleştiricilerin bir sürümünü uygulamak istiyorum. esinti kütüphanesi). Bir monad olduğundan, Rand harita ve flatMap'i uygular. Yaygın olarak, Gen'i bir monad olarak uygulamak istiyorum. Aşağıda gösterildiği üzere, Gen için haritanın uygulanması basittir:Agrega monadındaki flatMap'in uygulanması
// Rand is from the breeze library
trait Rand[T] {
def map[U](f: T => U): Rand[U]
def flatMap[U](f: T => Rand[U]): Rand[U]
}
case class Gen[T](dist: Rand[T]) {
def map[U](f: T => U): Gen[U] = Gen(dist.map { f })
def flatMap[U](f: T => Gen[U]): Gen[U] = {
// How to implement this?
}
}
Ancak flatMap uygulanmalıdır nasıl bana açık değildir. Bu kolayca elde edilebilir mi, yoksa (örneğin), bazı ara veri türü üzerinden bir dolaylılık seviyesi gerektiriyor mu?
Neyse ki, bağımsızlık istenen özelliktir. – NietzscheanAI