import scala.
util.
control.
TailCalls.
_
def isEven
(xs
: List
[Int
]): TailRec
[Boolean
] = if (xs.
isEmpty) done
(true) else tailcall
(isOdd
(xs.
tail))
def isOdd
(xs
: List
[Int
]): TailRec
[Boolean
] = if (xs.
isEmpty) done
(false) else tailcall
(isEven
(xs.
tail))
def main
(args
: Array
[String
]) { println(isEven((1 to 100000).toList).result.toString)
}
}
aW1wb3J0IHNjYWxhLnV0aWwuY29udHJvbC5UYWlsQ2FsbHMuXwoKCiAKb2JqZWN0IE1haW4gewogICAgZGVmIGlzRXZlbih4czogTGlzdFtJbnRdKTogVGFpbFJlY1tCb29sZWFuXSA9CiAgICAgICAgaWYgKHhzLmlzRW1wdHkpIGRvbmUodHJ1ZSkgZWxzZSB0YWlsY2FsbChpc09kZCh4cy50YWlsKSkKCiAgICBkZWYgaXNPZGQoeHM6IExpc3RbSW50XSk6IFRhaWxSZWNbQm9vbGVhbl0gPQogICAgICAgIGlmICh4cy5pc0VtcHR5KSBkb25lKGZhbHNlKSBlbHNlIHRhaWxjYWxsKGlzRXZlbih4cy50YWlsKSkKICAgICAgICAKICAgIGRlZiBtYWluKGFyZ3M6IEFycmF5W1N0cmluZ10pIHsKICAgICAgICBwcmludGxuKGlzRXZlbigoMSB0byAxMDAwMDApLnRvTGlzdCkucmVzdWx0LnRvU3RyaW5nKQogICAgfQp9