///|
fn show_hand(hand : @holdem.Evaluation) -> Unit {
  println("Category: " + @debug.to_string(hand.category))
  let names = hand.best_five.map(fn(card) { card.text() })
  println("Best five: " + names.join(" "))
  println("Tie-break ranks: " + @debug.to_string(hand.tie_break))
}

///|
fn main {
  let cards = @holdem.parse_cards("As Ad Ah Ks Kd Kh 2c").unwrap()
  let best = @holdem.evaluate(cards).unwrap()
  println("MoonHoldem: best five out of seven")
  show_hand(best)
  let hero = @holdem.parse_cards("As Ad").unwrap()
  let villain = @holdem.parse_cards("Ks Kd").unwrap()
  let board = @holdem.parse_cards("2c 3d 7h 9s Jc").unwrap()
  let result = @holdem.showdown([hero, villain], board).unwrap()
  println("Showdown: As Ad vs Ks Kd, board 2c 3d 7h 9s Jc")
  println("Winners (zero-based): " + @debug.to_string(result.winners))
  for i in 0..