Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Composes an [List] from multiple creation functions chained by flatMap.
- *
- * @return list
- */
- fun <A, B, C, D, E, F, G, H, I, R> doM(
- zero: () -> Iterable<A>,
- one: (A) -> B,
- two: (A, B) -> C,
- three: (A, B, C) -> D,
- four: (A, B, C, D) -> E,
- five: (A, B, C, D, E) -> F,
- six: (A, B, C, D, E, F) -> G,
- seven: (A, B, C, D, E, F, G) -> H,
- eight: (A, B, C, D, E, F, G, H) -> I,
- nine: (A, B, C, D, E, F, G, H, I) -> R): List<R> =
- zero.invoke()
- .flatMap { a ->
- one.invoke(a)
- .flatMap { b ->
- two.invoke(a, b)
- .flatMap { c ->
- three.invoke(a, b, c)
- .flatMap { d ->
- four.invoke(a, b, c, d)
- .flatMap { e ->
- five.invoke(a, b, c, d, e)
- .flatMap { f ->
- six.invoke(a, b, c, d, e, f)
- .flatMap { g ->
- seven.invoke(a, b, c, d, e, f, g)
- .flatMap { h ->
- eight.invoke(a, b, c, d, e, f, g, h)
- .flatMap { i ->
- nine.invoke(a, b, c, d, e, f, g, h, i)
- }
- }
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement