object Main { } MyType(fa.value.flatMap(a => List.fill(choose)(refine(f(a)).asInstanceOf[B]))) } } val m = myFunctor println(m.map(fa)(i => i + 2)) println(m.map(fa)(i => i + 2)) println(m.map(fa)(i => i + 2)) println(m.map(fa)(i => i + 2)) println(m.map(fa)(i => i + 2)) println(m.map(fa)(i => i + 2)) } }
Standard input is empty
MyType(List(3, 3, 3, 8)) MyType(List(3, 3, 4, 4, 4, 8)) MyType(List(3, 3, 3, 3, 4, 8, 8, 8, 8)) MyType(List(3, 3, 4, 8, 8, 8)) MyType(List(3, 3, 3, 3, 4, 8, 8, 8, 8)) MyType(List(3, 8, 8, 8, 8))