# File lib/mindi.rb, line 58 def singleton(name, &impl) # :yields: impl_name = Container.impl_method_name(name) define_method(impl_name, &impl) ivname = Container.iv(name) define_method(name) do val = instance_variable_get(ivname) val ||= instance_variable_set(ivname, send(impl_name)) end end