class Foo( val width: Int, val height: Int, // This function tells the constructor which cells are alive // if init(i, j) is true, the cell (i, j) is alive init: (Int, Int) -> String ) { val live: Array> = Array(height) { i -> Array(width) { j -> init(i, j) } } } fun box(): String { val foo = Foo(2, 2) { i, j -> if (i == j) (if (i == 0) "O" else "K") else "Fail@[$i, $j]" } return foo.live[0][0] + foo.live[1][1] }