Skip to content

Instantly share code, notes, and snippets.

@surajsau
Created March 13, 2020 14:11
Show Gist options
  • Save surajsau/1019b1f0c72cd1e41c54b13a38bc3b4c to your computer and use it in GitHub Desktop.
Save surajsau/1019b1f0c72cd1e41c54b13a38bc3b4c to your computer and use it in GitHub Desktop.
// All return a type Monad
val split: (String) -> Monad<Pair<StringPair, StringPair>> = { str ->
..
Monad.Something(Pair(..))
}
val convertToInt: (pair: Pair<StringPair, StringPair>) -> Monad<Pair<IntPair, IntPair>> = { pair ->
..
Monad.Something(Pair(..))
}
val transform: (pair: Pair<IntPair, IntPair>) -> Monad<Int> = { pair ->
..
Monad.Something(Int)
}
val test = "10,2,3,1"
val result = Monad.Something(test) // Monad("10,2,3,1")
.flatMap(split) // Monad((("10", "2"), ("3", "1")))
.flatMap(convertToInt) // Monad(((10, 2), (3, 1)))
.flatMap(transform) // Monad(3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment