開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Haskell (プログラミング言語)
- Haskell Platform(ghci)(処理系)
関数プログラミング入門(Richard Bird (著)、山下伸夫 (翻訳)、オーム社)の第2章(単純なデータ型)、2.7(文字列)、練習問題2.7.1、2.7.2、2.7.3を取り組んでみる。
練習問題2.7.1、2.7.2、2.7.3
コード(Emacs)
s1, s2, s3 :: String
s1 = show (show 42)
s2 = show 42 ++ show 42
s3 = show "\n"
monthName :: Integer -> String
monthName n
| n == 1 = "January"
| n == 2 = "Feburary"
| n == 3 = "March"
| n == 4 = "April"
| n == 5 = "May"
| n == 6 = "June"
| n == 7 = "July"
| n == 8 = "August"
| n == 9 = "Semptember"
| n == 10 = "October"
| n == 11 = "November"
| n == 12 = "December"
| otherwise = error "Invalid"
showDate :: (Integer, Integer, Integer) -> String
showDate (d, m, y) = show d ++ " " ++ (monthName m) ++ " " ++ show y
showDate' :: (Integer, Integer, Integer) -> String
showDate' (d, m, y) = show d ++ s ++ " " ++ (monthName m) ++ " " ++ show y
where r = mod d 10
s | r == 1 = "st"
| r == 2 = "nd"
| r == 3 = "rd"
| otherwise = "th"
main :: IO ()
main = do
-- 2.7.1
putStrLn ("MacMillan" ++ "\n" ++ "Macmillan" ++ "\n" ++ "McMillan")
-- 2.7.2
putStrLn (show (s1 == "\"42\""))
putStrLn (show (s2 == "4242"))
putStrLn (show (s3 == "\"\\n\""))
-- 2.7.3
putStrLn (showDate (10, 12, 1997))
putStrLn (showDate' (10, 12, 1997))
putStrLn (showDate' (31, 12, 1997))
入出力結果(Terminal, ghci)
$ ghci sample7.hs GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Main ( sample7.hs, interpreted ) Ok, modules loaded: Main. *Main> main MacMillan Macmillan McMillan True True True 10 December 1997 10th December 1997 31st December 1997 *Main> :q Leaving GHCi. $
0 コメント:
コメントを投稿