summaryrefslogtreecommitdiff
path: root/week1/camil/2.11/BottlesOfBeer.icl
blob: 70628a16c987785af5bdf2551466e691de4fdf19 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module BottlesOfBeer

import StdEnv

Start = [(fst_line x +++ "\n" +++ snd_line x +++ "\n\n") \\ x <- [99,98..0]]

fst_line :: Int -> String
fst_line n = btl n True +++ wall +++ ", " +++ btl n False +++ " of beer."

snd_line :: Int -> String
snd_line 0 = "Go to the store and buy some more, " +++ btl 99 False +++ wall +++ "."
snd_line n = "Take one down and pass it around, " +++ btl (n-1) False +++ wall +++ "."

btl :: Int Bool -> String
btl 0 True = "No more bottles"
btl 0 False = "no more bottles"
btl 1 b = "1 bottle"
btl n b = toString n +++ " bottles"

wall :: String
wall = " of beer on the wall"