Hal, [I think this sort of question would be better on the haskell-cafe list.]
I don't think what you want can be done directly. It's the old thing about not having lambdas at the type level. You want: instance Eq a => Coll (\x. x -> Bool) a where ... and you just can't do that. You *can* abstract the second argument of (->): instance Eq a => Coll ((->) Bool) a where ... but not the first. It's a well known shortcoming in Haskell, that you can partially apply type constructors, but you can't do argument permutation. I know of no good solution. Adding type lambdas in their full glory makes type inference pretty much impossible. What we'd like is a compromise. Maybe someone can invent one. But take care. The ground is littered with corpses. Simon | -----Original Message----- | From: Hal Daume III [mailto:[EMAIL PROTECTED]] | Sent: 23 April 2002 01:30 | To: Jorge Adriano | Cc: Haskell Mailing List | Subject: Re: defining (-> Bool) as a set | | | Yeah, both options suggested are valid, of course. But I | really don't want to have a constructor and I'm using Edison | where Coll is defined something like: | | class Coll c e where | empty :: c e | insert :: c e -> e -> c e | | etc., which precludes the fun dep solution. | | - Hal | | -- | Hal Daume III | | "Computer science is no more about computers | [EMAIL PROTECTED] | than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume | | On Tue, 23 Apr 2002, Jorge Adriano wrote: | | > | > > class Collection e ce | ce -> e where | > > empty :: ce | > > insert :: e -> ce -> ce | > > member :: e -> ce -> Bool | > > | > > instance Eq a => Collection a (a -> Bool) where | > > empty = (\x -> False) | > > insert e f = (\x -> if x == e then True else f x) | > > member e f = f e | > | > This is way better than my solution... | > | > I had never used multi-parameter classes before, so I forgot the | > functional | > dependency (right name? the "|ce->e"), and there was | obviously no need for my | > extra constructor. | > | > J.A. | > | | _______________________________________________ | Haskell mailing list | [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell | _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell