//arrow-core/arrow.core/unzip

unzip

common fun <A, B> Iterable<Pair<A, B».unzip(): Pair<List<A>, List<B»

unzips the structure holding the resulting elements in an Pair

import arrow.core.*

fun main(args: Array<String>) {
  //sampleStart
  val result =
     listOf("A" to 1, "B" to 2).unzip()
  //sampleEnd
  println(result)
}

common inline fun <A, B, C> Iterable<C>.unzip(fc: (C) -> Pair<A, B>): Pair<List<A>, List<B»

after applying the given function unzip the resulting structure into its elements.

import arrow.core.*

fun main(args: Array<String>) {
  //sampleStart
  val result =
   listOf("A:1", "B:2", "C:3").unzip { e ->
     e.split(":").let {
       it.first() to it.last()
     }
   }
  //sampleEnd
  println(result)
}

common fun <A, B> NonEmptyList<Pair<A, B».unzip(): Pair<NonEmptyList<A>, NonEmptyList<B»

fun <A, B, C> NonEmptyList<C>.unzip(f: (C) -> Pair<A, B>): Pair<NonEmptyList<A>, NonEmptyList<B»

fun <A, B> Option<Pair<A, B».unzip(): Pair<Option<A>, Option<B»

inline fun <A, B, C> Option<C>.unzip(f: (C) -> Pair<A, B>): Pair<Option<A>, Option<B»

common fun <A, B> Sequence<Pair<A, B».unzip(): Pair<Sequence<A>, Sequence<B»

unzips the structure holding the resulting elements in an Pair

import arrow.core.unzip

fun main(args: Array<String>) {
  //sampleStart
  val result = sequenceOf("A" to 1, "B" to 2).unzip()
  //sampleEnd
  println("(${result.first.toList()}, ${result.second.toList()})")
}

common fun <A, B, C> Sequence<C>.unzip(fc: (C) -> Pair<A, B>): Pair<Sequence<A>, Sequence<B»

after applying the given function unzip the resulting structure into its elements.

import arrow.core.unzip

fun main(args: Array<String>) {
  //sampleStart
  val result =
   sequenceOf("A:1", "B:2", "C:3").unzip { e ->
     e.split(":").let {
       it.first() to it.last()
     }
   }
  //sampleEnd
  println("(${result.first.toList()}, ${result.second.toList()})")
}

common fun <K, A, B> Map<K, Pair<A, B».unzip(): Pair<Map<K, A>, Map<K, B»

Unzips the structure holding the resulting elements in an Pair

import arrow.core.*

fun main(args: Array<String>) {
  //sampleStart
  val result =
     mapOf("first" to ("A" to 1), "second" to ("B" to 2)).unzip()
  //sampleEnd
  println(result)
}

common fun <K, A, B, C> Map<K, C>.unzip(fc: (Map.Entry<K, C>) -> Pair<A, B>): Pair<Map<K, A>, Map<K, B»

After applying the given function unzip the resulting structure into its elements.

import arrow.core.*

fun main(args: Array<String>) {
  //sampleStart
  val result =
   mapOf("first" to "A:1", "second" to "B:2", "third" to "C:3").unzip { (_, e) ->
     e.split(":").let {
       it.first() to it.last()
     }
   }
  //sampleEnd
  println(result)
}

Do you like Arrow?

Arrow Org
<