読者です 読者をやめる 読者になる 読者になる

Haskellで作る奇妙なプログラミング言語 Haskell練習問題編

Rubyで作る奇妙なプログラミング言語Haskellで追った。

最初の章は言語の練習。もう勉強したことを忘れてきているのでちょうどいい。

1-1 Haskell練習問題

問1 画面に「Hello, world!」という文字列を出力するHaskellプログラムを書いてください。

main = do putStrLn "Hello, world!"

問2 「99 bottles of beer」の全文を出力するHaskellプログラムを書いてください。

verse :: Integer -> String
verse 0 = "No More bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottoles of beer on the wall."
verse n = bottles n ++ " of beer on the wall, " ++ bottles n ++ " of beer.\nTake one down and pass it around, " ++ bottles (n-1) ++ " of beer on the wall."
  where bottles 0 = "no more bottles"
        bottles 1 = "1 bottle"
        bottles n = show n ++ " bottles"

main = mapM putStrLn $ map verse [99,98..0]

mapMのところが何故こう書くのか分からない。後でIOとモナドを調べなおす。
上級者の回答。
http://www.99-bottles-of-beer.net/language-haskell-1070.html
Alternative Versionsが全く読めない。

ソースコードは以下。
https://github.com/kawausokun/esoteric-language-in-haskell