I like that question and that distinction, and I think the answer is I&#x27;d give is &quot;yes&quot;.<p>Tcl&#x27;s flexible, to the degree of being able to define new language constructs or redefine built-ins (e.g. you can redefine the basic if-then if you want), which is great in some ways.<p>But it always seemed to me like the language culture is so deep in the mentality of &quot;if you need, implement it yourself,&quot; that the flexibility becomes a crutch for the language developers.<p>What I mean is..  well, the basic data structure is the list, and you get built-ins for adding to a list (lappend), reversing a list (lreverse), but removing an element from a list (what would be &#x27;lremove&#x27;)?  You&#x27;ve got to code it yourself.<p>Hey, the man page for &#x27;lreplace&#x27; even gives an example!  <a href="http:&#x2F;&#x2F;www.tcl.tk&#x2F;man&#x2F;tcl&#x2F;TclCmd&#x2F;lreplace.htm" rel="nofollow">http:&#x2F;&#x2F;www.tcl.tk&#x2F;man&#x2F;tcl&#x2F;TclCmd&#x2F;lreplace.htm</a><p><i>Why isn&#x27;t that built in?</i>  The common answers are, it&#x27;s so simple you can code it yourself, or you might want an lremove with different behavior than me.  To the second answer, realistically, if the language had a built-in lremove, most people would just express their programs to use it, and those who needed a different one could still write it.  To the first, yes, it&#x27;s simple, but it&#x27;s just a little bit of sand in the underwear--unpleasant friction you&#x27;d like to ignore but keeps popping up.<p>Lack of built-in OO was the same way until relatively recently in the language history.  Lots of people made home-brew ones, and there were several common OO systems, but what&#x27;s a newbie to do?  Research all the different OO systems to make a decision first?  More sand in the underwear.  Run into enough of that stuff and it just drives you crazy and makes you want to stop using the language.