【发布时间】:2015-07-08 17:05:15
【问题描述】:
在下面的代码中我不得不使用elem'而不是简单的elem,因为prelude已经有一个函数elem,我如何在声明Tree模块时使用elem,避免冲突??
module Tree(Tree(..), singleton, insert, elem') where
data Tree a = Empty | Node a (Tree a) (Tree a) deriving (Show)
singleton :: a -> Tree a
singleton a = Node a Empty Empty
insert :: (Ord a) => a -> Tree a -> Tree a
insert e Empty = singleton e
insert e tree@(Node e2 left right)
| e == e2 = tree
| e > e2 = Node e2 left (insert e right)
| e < e2 = Node e2 (insert e left) right
elem' :: (Ord a) => a -> Tree a -> Bool
e `elem'` Empty = False
e `elem'` (Node e2 left right)
| e == e2 = True
| e > e2 = e `elem'` right
| e < e2 = e `elem'` left
【问题讨论】:
标签: haskell module namespaces