1
這裏是樹的代碼。如何修復(Ord(Tree a0))的無實例
import Control.Exception
import Control.Monad
import Control.DeepSeq
import qualified Data.List as List
import Test.HUnit
data Tree a = Empty
| Node a (Tree a) (Tree a)
deriving (Show, Eq)
insertTree :: (Ord a, Show a) => Tree a -> a -> Tree a
insertTree Empty x = Node x Empty Empty
insertTree (Node v tLeft tRight) x
| x == v = Node v tLeft tRight
| x < v = Node v (insertTree tLeft x) tRight
| x > v = Node v tLeft (insertTree tRight x)
createTree :: (Ord a, Show a) => [ a ] -> Tree a
createTree = foldl insertTree Empty
member:: (Ord a, Show a) => Tree a -> a -> Bool
member Empty x = False
member (Node v tLeft tRight) x
| x == v = True
| x < v = member tLeft x
| x > v = member tRight x
intTree = createTree [ 9, 7, 2, 8, 6, 0, 5, 3, 1 ]
listTree = createTree (List.permutations [ 0 .. 3 ])
strTree = createTree [ "hello"
, "world"
, "lorem"
, "ipsum"
, "dolor"
, "sit"
, "amet"
]
我的代碼基本上看看一個元素是否包含在樹內。 當我運行我的代碼 例如:ghci.> member 5 intTree
我得到一個錯誤沒有實例(Ord(Tree a0))。 我想知道我該如何解決這個問題。任何幫助是極大的讚賞。
'member'依次接受樹和元素。 – 2013-05-06 05:34:54
什麼n.m.說 - 你想評估'成員intTree 5' – ErikR 2013-05-06 05:43:44
@ n.m .:你能寫出答案,以便問題可以被標記爲解決?謝謝。 – 2013-05-06 06:11:16