I want to call a class level method from the the instance level, but I
need it to go through the singeton if it exists. Here is the most basic
example:

  class X
    def self.f ; "A" ; end
    def g ; self.class.f ; end
  end

  x = X.new
  x.g  #=> "A"

  def x.f; "B"; end
  x.g  #=> "A"

How do I get the last to return "B"? I know I could use
'(class<<self;self;end)' instead of 'self.class', but that will create
a singelton even if doesn't exist, which seems very wasteful. Yet I
don't recall any (non-hack) way to detect if a singleton is defined. Is
there?

It would be nice if there was a reference with which we could call up
through the class level like this.

T.