- 作者: MiranLipovaca
- 出版社/メーカー: オーム社
- 発売日: 2017/07/14
- メディア: Kindle版
- 購入: 4人 クリック: 9回
- この商品を含むブログを見る
今日は 第7章:型や型クラスを自分で作ろう 再帰的なデータ構造 の終わり (位置 3379/11175) まで読み進めました。
{-# OPTIONS -Wall #-} data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving(Show) singleTon :: a -> Tree a singleTon x = Node x EmptyTree EmptyTree treeInsert :: (Ord a) => a -> Tree a -> Tree a treeInsert x EmptyTree = singleTon x treeInsert x (Node a left right) | x == a = Node x left right | x < a = Node a (treeInsert x left) right | x > a = Node a left (treeInsert x right)
とすると
inarytree.hs:9:1: Warning: Pattern match(es) are non-exhaustive In an equation for `treeInsert': Patterns not matched: _ (Node _ _ _) Ok, modules loaded: Main.
という警告が出て、少し悩みました。 結局ガードの最後の部分が otherwise でなかったのが原因のようで、
treeInsert :: (Ord a) => a -> Tree a -> Tree a treeInsert x EmptyTree = singleTon x treeInsert x (Node a left right) | x == a = Node x left right | x < a = Node a (treeInsert x left) right | otherwise = Node a left (treeInsert x right)
と書いたら警告は出なくなりました。
今日は、新しく出てきた関数はありませんでした。 →今まで出てきた関数