Execute HQ9+: Difference between revisions

Content deleted Content added
m 'accumulator' changed to type unsigned int from int. Signed overflow is undefined in C, meaning the previous implementation had a bug!
added golo
Line 827:
 
See [[RCHQ9+/Go]].
 
=={{header|Golo}}==
<lang golo>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!")
}
}
</lang>
 
=={{header|Haskell}}==