Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.68 KB | None | 0 0
  1. /**
  2.  * Composes an [List] from multiple creation functions chained by flatMap.
  3.  *
  4.  * @return list
  5.  */
  6. fun <A, B, C, D, E, F, G, H, I, R> doM(
  7.         zero: () -> Iterable<A>,
  8.         one: (A) -> B,
  9.         two: (A, B) -> C,
  10.         three: (A, B, C) -> D,
  11.         four: (A, B, C, D) -> E,
  12.         five: (A, B, C, D, E) -> F,
  13.         six: (A, B, C, D, E, F) -> G,
  14.         seven: (A, B, C, D, E, F, G) -> H,
  15.         eight: (A, B, C, D, E, F, G, H) -> I,
  16.         nine: (A, B, C, D, E, F, G, H, I) -> R): List<R> =
  17.         zero.invoke()
  18.                 .flatMap { a ->
  19.                     one.invoke(a)
  20.                             .flatMap { b ->
  21.                                 two.invoke(a, b)
  22.                                         .flatMap { c ->
  23.                                             three.invoke(a, b, c)
  24.                                                     .flatMap { d ->
  25.                                                         four.invoke(a, b, c, d)
  26.                                                                 .flatMap { e ->
  27.                                                                     five.invoke(a, b, c, d, e)
  28.                                                                             .flatMap { f ->
  29.                                                                                 six.invoke(a, b, c, d, e, f)
  30.                                                                                         .flatMap { g ->
  31.                                                                                             seven.invoke(a, b, c, d, e, f, g)
  32.                                                                                                     .flatMap { h ->
  33.                                                                                                         eight.invoke(a, b, c, d, e, f, g, h)
  34.                                                                                                                 .flatMap { i ->
  35.                                                                                                                     nine.invoke(a, b, c, d, e, f, g, h, i)
  36.                                                                                                                 }
  37.                                                                                                     }
  38.                                                                                         }
  39.                                                                             }
  40.                                                                 }
  41.                                                     }
  42.                                         }
  43.                             }
  44.                 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement