開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Haskell (プログラミング言語)
- Haskell Platform(ghci)(処理系)
関数プログラミング入門(Richard Bird (著)、山下伸夫 (翻訳)、オーム社)の第4章(リスト)、4.4(zip)、練習問題4.4.1、4.4.2、4.4.3を取り組んでみる。
練習問題4.4.1、4.4.2、4.4.3
コード(Emacs)
-- 4.4.1 -- unzip [undefined] -- = pair (map fst, map snd) [undefined] -- = (map fst [undefined], map snd [undefined]) -- = ((fst undefined):(mapa fst []), (snd undefined):(map snd [])) -- = (undefined:[], undefined:[]) -- = ([undefined], [undefined]) -- 4.4.2 -- unzip . zipp ([x], []) -- = unzip [] -- = [] -- id ([x], []) = ([x], []) -- 成り立たない x :: ([Integer], [Char]) x = ([1], []) zipp :: ([a], [b]) -> [(a, b)] zipp = uncurry zip -- 4.4.3 -- cross (map f, map g) . unzip -- = cross (map f, map g) . (pair (map fst, map snd)) -- = pair ((map f) . (map fst), (map g) . (map snd)) -- = pair (map (f . fst), map (g . snd)) -- = pair (map (fst . cross (f, g)), map (snd . cross (f, g))) -- = pair (map fst . map (cross (f, g)), map snd . map (cross (f, g))) -- = pair (map fst, map snd) . (map (cross (f, g))) -- = unzip . (map (cross (f, g))) main :: IO () main = do print 10 print x print (unzip (zipp x)) print (id x) print ((unzip (zipp x)) == (id x))
入出力結果(Terminal, ghci, runghc)
$ runghc sample4.hs 10 ([1],"") ([],"") ([1],"") False $
0 コメント:
コメントを投稿