Haskell 如何修复(Ord(树a0))的no实例

Haskell 如何修复(Ord(树a0))的no实例,haskell,tree,Haskell,Tree,下面是一个树的代码 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,

下面是一个树的代码

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树a0的实例。 我想知道如何解决这个问题。非常感谢您的帮助

没有。。。错误几乎总是因为你的论点放错了地方。不幸的是,可能的修复方法是:为。。。建议通常是错误的

在这种情况下,因为member::Ord a,Show a=>Tree a->a->Bool,它首先需要它的树,然后是元素,所以您需要尝试member intTree 5,而不是member 5 intTree。

没有实例。。。错误几乎总是因为你的论点放错了地方。不幸的是,可能的修复方法是:为。。。建议通常是错误的


在这种情况下,因为member::Ord a,Show a=>Tree a->a->Bool,它首先需要它的树,然后是元素,所以您需要尝试member intTree 5而不是member 5 intTree。

member接受树和元素,按照这个顺序。n.m.说的-你想评估成员intTree5@n.m.当前位置你能把它写下来作为答案,这样问题就可以标记为已解决了吗?谢谢。member按顺序接受一棵树和一个元素。n.m.说了什么-你想评估member intTree5@n.m.当前位置你能把它写下来作为答案,这样问题就可以标记为已解决了吗?谢谢