nfrankel
07/09/2019, 8:20 PMfun foo( (vararg args: Any?) -> Unit) = ...Shawn
07/09/2019, 8:26 PMvarargfunShawn
07/09/2019, 8:27 PMArray<Any?>Nicholas Bilyk
07/09/2019, 8:28 PMNicholas Bilyk
07/09/2019, 8:30 PMfun vArgFunc(vararg t: String) {
	println("All ${t.joinToString()}")
}
fun t() {
	val z: KFunction1<Array<out String>, Unit> = ::vArgFunc
	z(arrayOf("one", "two", "three"))
}tseisel
07/09/2019, 8:30 PMfun foo(f: (Array<out Any?>) -> Unit)arrayOf(...)nfrankel
07/09/2019, 8:37 PMvar sort2 = fun(frequencies: Map<String, Int>) = frequencies
    .map { it.key to it.value }
    .sortedByDescending { it.second }
fun profile(f: (Map<String, Int>) -> List<Pair<String, Int>>): (Map<String, Int>) -> List<Pair<String, Int>> {
    val profilewrapper = fun(arg: Map<String, Int>): List<Pair<String, Int>> {
        val start = System.currentTimeMillis()
        val result = f.invoke(arg)
        val elapsed = start - System.currentTimeMillis()
        print("${f.toString()} took $elapsed secs")
        return result
    }
    return profilewrapper
}
fun main() {
    sort2 = profile(sort2)
}profile()varargAnyNicholas Bilyk
07/09/2019, 8:47 PMNicholas Bilyk
07/09/2019, 8:50 PMfun <P1, R> profile1(f: (P1)->R)): (P1) -> R { ... }
fun <P1, P2, R> profile2(f: (P1, P2)->R)): (P1, P2) -> R { ... }nfrankel
07/09/2019, 8:51 PMNicholas Bilyk
07/09/2019, 8:52 PMnfrankel
07/09/2019, 8:52 PMNicholas Bilyk
07/09/2019, 8:52 PMNicholas Bilyk
07/09/2019, 8:55 PMNicholas Bilyk
07/09/2019, 8:59 PMvar sort2 = fun(frequencies: Map<String, Int>) = frequencies
    .map { it.key to it.value }
    .sortedByDescending { it.second }
inline fun <R> profile(inner: () -> R): R {
    
        val start = System.currentTimeMillis()
        val result = inner()
		val elapsed = start  -System.currentTimeMillis()
       
        print("took $elapsed millisecs")
        return result
  
}
fun main(args: Array<String>) {
    val sorted = profile { sort2(mapOf()) }
}nfrankel
07/09/2019, 9:16 PMsort2profile()