I was playing around and tried: :: Env a b :== [(a, b)] :: Member (Env a b) :== (a, b) Clean wont allow this (regardless of whether I put the parentheses there). Is there some way to do what I'm trying to do? or this this completly impossible with Clean's type system?