開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Haskell (プログラミング言語)
- Haskell Platform(ghci)(処理系)
関数プログラミング入門(Richard Bird (著)、山下伸夫 (翻訳)、オーム社)の第2章(単純なデータ型)、2.4(組(タプル))、練習問題2.4.1、2.4.2、2.4.3、2.4.4を取り組んでみる。
練習問題2.4.1、2.4.2、2.4.3、2.4.4
コード(Emacs)
-- 2.4.1 -- cross (f, g) . cross (h, k) undefined -- = (pair (f . fst, g . snd)) . (pair (h . fst, k . snd)) undefined -- = (pair (f . fst, g . snd)) (h . fst undefined, k . snd undefined) -- = (f . h . fst undefined, g . k . snd undefined) -- = pair (f . h . fst, g . k . snd) undefined -- = cross (f . h, g . k) undefined -- 2.4.2 data Triple a b c = Triple a b c -- 2.4.3 age :: (Integer, Integer, Integer) -> (Integer, Integer, Integer) -> Integer age (d1, m1, y1) (d2, m2, y2) | m1 > m2 = a | m1 < m2 = a - 1 | d1 >= d2 = a | otherwise = a - 1 where a = y1 - y2 -- 2.4.4 instance (Enum a, Enum b) => Enum (a, b) where toEnum n = toEnum n fromEnum d = 0
入出力結果(Terminal, ghci)
$ ghci sample4.hs GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Main ( sample4.hs, interpreted ) Ok, modules loaded: Main. *Main> :t Triple 1 2 3 Triple 1 2 3 :: (Num c, Num b, Num a) => Triple a b c *Main> :t Triple 1 'a' undefined Triple 1 'a' undefined :: Num a => Triple a Char c *Main> age (9, 1, 2010) (10, 1, 2000) 9 *Main> age (10, 1, 2010) (10, 1, 2000) 10 *Main> age (11, 1, 2010) (10, 1, 2000) 10 *Main> age (10, 1, 2010) (10, 2, 2000) 9 *Main> age (10, 2, 2010) (10, 2, 2000) 10 *Main> age (10, 3, 2010) (10, 2, 2000) 10 *Main> :q Leaving GHCi. $
0 コメント:
コメントを投稿