Add chaos to Tcl. Probably one of the most profound changes to the language ever. Currently [set] is untouched but hopefully that too can be chaosified. ====== ## Brings some quantum-like chaos to any Tcl program ## Author: Kristoffer Lawson, setok@setok.co ## Idea from Tiago Roberti Sampaio set ChaosFactor 0.5 set SchrodingerBody { ::chaos::if {rand() < $::ChaosFactor} { ::chaos::return } } proc chaosify {cmd} { rename $cmd ::chaos::$cmd proc $cmd {args} " $::SchrodingerBody ::chaos::uplevel \[::chaos::list ::chaos::$cmd \{*\}\$args\] " } foreach cmd [info commands] { if {$cmd ne "if" && $cmd ne "proc" && $cmd ne "rename" && $cmd ne "global" && $cmd ne "chaosify" && $cmd ne "set"} { chaosify $cmd } } rename if ::chaos::if proc if {args} " $::SchrodingerBody ::chaos::if \{*}\$args " rename global ::chaos::global proc global {args} " $::SchrodingerBody ::chaos::global \{*}\$args " rename rename ::chaos::rename proc rename {args} " $::SchrodingerBody ::chaos::rename \{*}\$args " ::chaos::rename proc ::chaos::proc ::chaos::proc proc {name arguments body} { set body $::SchrodingerBody$body ::chaos::proc $name $arguments $body } #chaosify puts set animal cat puts $animal puts $animal for {set i 0} {$i < 10} {incr i} { puts "The Internet is for $animal videos" } proc test {} { puts horse } test test test test test ====== ---- '''[arjen] - 2017-12-08 08:53:03''' Somewhat pedantic comment: Schroedinger did not invent the idea of chaos - contrary to the suggestion made here, quantum mechanics is not a theory about chaos, but instead a very precise theory about possibilities that take shape once the system is observed. Perhaps rename this to LorentzTcl, as Edward Lorentz (so not Hendrik Lorentz, who ''is'' in fact connected to quantum mechanics) was one of the first to describe the chaotic dynamics of a seemingly ordinary system. ---- '''[arjen] - 2017-12-08 10:22:38''' On the other hand, now that I have seen it at work, the effect is really quantum-like, not chaotic though. How about introducing boson- and fermion-like commands? (Just kidding) <>[Radical Language Modification]