> Still, it bothers me a little that x==y does not always
> imply x===y. But I will just have to get used to that...
> Actually I have trouble remembering what === means --
> whether to say x === y or y === x, which are of course
> not the same.

You may then do like I do in Perl:

def foo(arg)
  ({
    String => proc { print "  arg is a string\n" },
    Array  => proc { print "  arg is an array\n" },
    Hash   => proc { print "  arg is a hash\n"   },
  }[arg] ||
    proc { print "  arg is unknown\n" }
  ).call
end

matju