プログラミング Haskell 第12章 遅延評価 練習問題

今日は少しイレギュラーですが休日に自宅で読みました。12章の最後の練習問題です。

  • 6.
data Tree a = Leaf | Node (Tree a ) a (Tree a)

repeatTree :: a -> Tree a
repeatTree x = Node (repeatTree x) x (repeatTree)

takeTree :: Int -> Tree a -> Tree a
takeTree 0 _ = Leaf
takeTree (n+1) Leaf = Leaf
takeTree (n+1) (Node l x r) = Node (takeTree n l) x (takeTree n r)

replicate :: Int -> a -> Tree a
replicate n = takeTree n . repeatTree

これで12章は終わり。本書の最終章、13章へ進みます。