
"Eray Ozkural (exa)" wrote:
Okay, I guess I got it now. The (types of) elements of a Set ought to be instances of Ord.
Yes, that's right. It's fairly easy to provide the required instances: module Hypergraph where import Set type Hypergraph a = Set (Set a) instance Ord a => Ord (Set a) where compare x y = compare (setToList x) (setToList y) hgraph :: Ord a => [[a]] -> Hypergraph a hgraph = mkSet . map mkSet Now it works as expected: $ ghci -package data ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 5.00.2, For Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package std ... linking ... done. Loading package lang ... linking ... done. Loading package concurrent ... linking ... done. Loading package posix ... linking ... done. Loading package util ... linking ... done. Loading package data ... linking ... done. Prelude> :load Hypergraph Compiling Hypergraph ( Hypergraph.hs, interpreted ) Ok, modules loaded: Hypergraph. Hypergraph> elementOf (mkSet [1]) (hgraph [ [1,2], [1] ]) True Cheers, Tom P.S. Nice to see a fellow K5'er on the Haskell lists. (I go my "tmoertel" on K5.)