RosettaCodeData/Task/Menu/Langur/menu.langur
2026-04-30 12:34:36 -04:00

21 lines
563 B
Text

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"])