From: Dumaiu Date: 2007-12-02T13:34:59+09:00 Subject: Warnings, exceptions, and constant modifications, redux. Hello, all. With your permission I'd like to resurrect a topic that seems to have died in 2002. At least, this is the most info I've found. The question was, Why does modification of a constant produce a warning and not an exception? Matz's answer, ruby-talk 48168, was as follows (angle brackets added): > Hi, > > In message "warning modifying constant & 'global constant'" > on 02/08/26, David Garamond writes: > > |1. if someone attempts to modify a constant, why does ruby choose to > |emit a warning instead of a fatal error? > > If it is a fatal error, something like Ruby embedded editor will meet > serious problems, e.g. > > M-x eval-ruby-expression > Eval: Foo = 42 > bang! > > |2. is there a beast called a 'global constant'? i tried defining $Foo > |and ruby allows me to rebind $Foo later. > > No. $Foo is a plain global variable. > > matz. Unfortunately, I'm not familiar with 'eval-ruby-expression', which looks like some sort of Emacs command. So I still consider it a fairly serious problem that modification of a constant produces nothing more serious than a warning, which is useless without human supervision. Especially because, even if an exception were raised instead, a bypass system is still so easy to arrange: class Module def const_set!( name, val ) remove_const(name) if const_defined?(name) const_set( name, val ) end end Is this 'embedded editor' problem the same as it was five years ago? Could somebody who *does* know about embedded editors explain what it is about them that makes constants so hard to deal with? Ruby-talk 48271, from the same thread: > Hi, > > In message "Re: warning modifying constant & 'global constant'" > on 02/08/27, Paul Brannan writes: > > |> M-x eval-ruby-expression > |> Eval: Foo = 42 > |> bang! > | > |What problems would there be with making it an exception? > > for example, eval-current-buffer may cause trouble if it redefines > contants. > > matz. How do embedded editors normally handle exceptions? Thanks to David Garamond for creating the prior thread. - Jonathan