
Hi everyone, I defined my own list datatype and then tried to declare it as an instance of type class Ord. However when I test it with Nil > Cons 1(Nil) I get an "ERROR - Control stack overflow" I am under the impression that the ord class defines default implementations of (<=), (>),(>=) so that I only have to supply the implementation of (<) shown below. Can some one tell me why this does not work the way I expect it to? My very own list data type
data List a = Nil | Cons a (List a) deriving (Show)
Derive the equality type for list.
instance (Eq a) => Eq (List a) where Nil == Nil = True Nil == Cons y ys = False Cons x xs == Nil = False Cons x xs == Cons y ys = (x == y) && (xs == ys)
Derive the ordered type for list
instance (Ord a) => Ord (List a) where Nil < Nil = False Nil < Cons y ys = True Cons x xs < Nil = False Cons x xs < Cons y ys = (x < y) && (xs < ys)
-- Lloyd G Smith