3
data Bst a = Empty | Node (Bst a) a (Bst a)
lElems :: Ord a => a -> Bst a -> Int
lElems _ Empty = -1
lElems n (Node l m r)
| n == m = n
| n > m = lElems n r
| n < m = lElems n l
在這裏您會看到類型和程序的定義。如果它在樹中,我想返回元素,否則返回-1。Haskell,在bst中查找元素
However, I had this problem
Couldn't match expected type `Int' with actual type `a'
`a' is a rigid type variable bound by
the type signature for lElems :: Ord a => a -> Bst a -> Int
at C:\Users\User\workspace\s\src\Main.hs:3:11
有人能解釋我這裏有什麼問題嗎?
「我想返回元素,如果它在樹中,則返回-1,否則返回-1」 - 如果元素不是數字,則沒有包含-1和元素值的類型。考慮使用Haskell風格的'Maybe',而不是錯誤的C風格錯誤報告。 –