Mainly for pedagogical purposes, I'm writing a BST. The elements in a BST
need to be ordered, so I define the new data type like this:
data (Ord a) => BST a = Empty | BST (BST a) a (BST a)
After some hacking and some reading, I came across Data.Foldable, and
think it would be neat to make BST Foldable:
instance Foldable BST where
foldr f s Empty = s
foldr f s (BST l v r) = foldr f (f v (foldr f s r)) l
However, ghc tells me ``Could not deduce (Ord a) from the context
(Foldable BST) arising from use of `BST' at bst.hs:19:13-21'', which is
the second line of the foldr definition.
If I remove the (Ord a) context from the BST data definition, ghc accepts
my code. However, I'd like to keep that context. How does one do this?
Thanks!
Brad Larsen
P.S. Does that definition of foldr look reasonable, i.e. is it
associating in the ``right'' order for a binary tree?
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe