Monads/List monad: Difference between revisions

Added Kotlin
(Added Kotlin)
Line 310:
 
<pre>[[3, 4, 5], [5, 12, 13], [6, 8, 10], [7, 24, 25], [8, 15, 17], [9, 12, 15], [12, 16, 20], [15, 20, 25]]</pre>
 
=={{header|Kotlin}}==
<lang scala>// version 1.2.10
 
class MList<T : Any> private constructor(val value: List<T>) {
fun <U : Any> bind(f: (List<T>) -> MList<U>) = f(this.value)
 
companion object {
fun <T : Any> unit(lt: List<T>) = MList<T>(lt)
}
}
 
fun doubler(li: List<Int>) = MList.unit(li.map { 2 * it } )
 
fun letters(li: List<Int>) = MList.unit(li.map { "${('@' + it)}".repeat(it) } )
 
fun main(args: Array<String>) {
val iv = MList.unit(listOf(2, 3, 4))
val fv = iv.bind(::doubler).bind(::letters)
println(fv.value)
}</lang>
 
{{out}}
<pre>
[DDDD, FFFFFF, HHHHHHHH]
</pre>
 
=={{header|Ring}}==
9,476

edits