val choose = fn*(entries list) { if not entries: return "" # print the menu writeln join(map(entries, 1..len(entries), by=fn(e, i) { "{{i:2}}: {{e}}" }), delim="\n") val idx = read( prompt="Select entry #: ", validation=fn(x) { if not x -> RE/^[0-9]+$/: return false val y = x -> number y > 0 and y <= len(entries) }, errmsg="invalid selection\n", maxattempts=-1, ) -> number entries[idx] } writeln choose(["fee fie", "eat pi", "huff and puff", "tick tock"])