• Non-exhaustive patterns in function split

    From Ho Yeung Lee@21:1/5 to All on Tue Jul 26 19:33:17 2016
    let aa = [1,2,3,4,5]
    let aatree = treeFromList aa
    split 3 aatree


    *Main> let aa = [1,2,3,4,5]
    *Main> let aatree = treeFromList aa
    *Main> split 3 aatree
    (Node 1 Empty (Node 2 Empty *** Exception: a.hs:(13,1)-(18,30): Non-exhaustive patterns in function split



    a.hs

    import Data.List

    data BinTree a = Empty
    | Node a (BinTree a) (BinTree a)
    deriving (Show)
    treeFromList :: (Ord a) => [a] -> BinTree a
    treeFromList [] = Empty
    treeFromList (x:xs) = Node x (treeFromList (filter (<x) xs))
    (treeFromList (filter (>x) xs))


    split :: Ord a => a -> BinTree a -> (BinTree a, BinTree a)
    split _ Empty = (Empty, Empty)
    split s (Node x lst rst)
    | s < x = let (nlt, nrt) = split s lst in
    (nlt, Node x nrt rst)
    | s > x = let (nlt, nrt) = split s rst in
    (Node x lst nlt, nrt)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)