Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

11
  • $\begingroup$ with Echo=., no? $\endgroup$ Commented Jan 13, 2021 at 18:32
  • $\begingroup$ sure, but how do reenable it without restarting the kernel $\endgroup$ Commented Jan 13, 2021 at 18:34
  • 1
    $\begingroup$ Also, you might use Echo = #& instead, since Echo can take multiple arguments. $\endgroup$ Commented Jan 13, 2021 at 18:42
  • 1
    $\begingroup$ I would advocate for a global search-and-replace of all Echo[ with myEcho in your code, then at the top assign an appropriate value to myEcho, i.e. myEcho = Echo vs. myEcho = Identity depending on what you want. The global search should be relatively safe and painless, since Echo is not a common keyword in other function names. This would also work with all other types of Echo, turning them into myEcho... versions if you wanted. $\endgroup$ Commented Jan 13, 2021 at 18:45
  • 1
    $\begingroup$ @RomaLee This is likely due to Echo being one of the autoloaded symbols. Check, e.g. on a fresh kernel, this: OwnValues[Echo], you will see something like {HoldPattern[Echo] :> System`Dump`AutoLoad[Hold[Echo], Hold[Echo, EchoFunction], "Language`Echo`"] /; System`Dump`TestLoad}. So, initially, Echo has OwnValues. When you execute Echo[0] (actually, just Echo is enough), you cause that definition to run. As a result, OwnValues[Echo] get cleared, instead DownValues[Echo] get populated. When you do Echo = Identity without auto-load, you hopelessly overwrite autoload code. $\endgroup$ Commented Jan 13, 2021 at 19:04