40 lines
917 B
Text
40 lines
917 B
Text
module hq9plus
|
|
|
|
function main = |args| {
|
|
var accumulator = 0
|
|
let source = readln("please enter your source code: ")
|
|
foreach ch in source: chars() {
|
|
case {
|
|
when ch == 'h' or ch == 'H' {
|
|
println("Hello, world!")
|
|
}
|
|
when ch == 'q' or ch == 'Q' {
|
|
println(source)
|
|
}
|
|
when ch == '9' {
|
|
ninety9Bottles()
|
|
}
|
|
when ch == '+' {
|
|
accumulator = accumulator + 1
|
|
}
|
|
otherwise {
|
|
println("syntax error")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function bottles = |amount| -> match {
|
|
when amount == 1 then "One bottle"
|
|
when amount == 0 then "No bottles"
|
|
otherwise amount + " bottles"
|
|
}
|
|
|
|
function ninety9Bottles = {
|
|
foreach n in [99..0]: decrementBy(1) {
|
|
println(bottles(n) + " of beer on the wall,")
|
|
println(bottles(n) + " of beer!")
|
|
println("Take one down, pass it around,")
|
|
println(bottles(n - 1) + " of beer on the wall!")
|
|
}
|
|
}
|