2017年2月27日月曜日

開発環境

関数プログラミング入門(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 コメント:

コメントを投稿