Category talk:Tcl: Difference between revisions

→‎Language features: Reasoning behind features.
m (→‎Language features: forgot to sign...)
(→‎Language features: Reasoning behind features.)
Line 17:
 
Tcl uses a mixture of pass-by-value and pass-by-reference, and is very good at simulating pass-by-name too. The base language semantics are strictly pass-by-value; this was how everything was done up to Tcl 7.6, and when combined with the fact that it was also string based, it gave the language a (deserved) reputation for being slow. In Tcl 8.0 the language implementation was switched to pass-by-reference, with the entities being semantically immutable objects (the actual code is more nuanced than that, of course); that was a major part of why Tcl sped up with that version. The pass-by-name support is through the <code>[http://www.tcl.tk/man/tcl8.6/TclCmd/upvar.htm upvar]</code> command, which allows the looking-up of a variable in one scope and aliasing it to another variable in the current scope. —[[User:Dkf|Dkf]] 10:16, 31 May 2009 (UTC)
 
I've selected these features:
 
<code>expression=dynamic</code>
:We use dynamic typing in <code>expr</code>.
<code>compat=duck</code>
:We say it's a <s>duck</s>list if it supports the operations of a <s>duck</s>list.
<code>checking=dynamic</code>
:Our type checks are applied at runtime only. That's when they are enforced strictly.
<code>parampass=value</code>
:We always pass parameters by value. We simulate pass-by-reference by passing handles/names and pass-by-name with the help of <code>upvar</code>.
<code>safety=safe</code>
:The language, especially in a safe interpreter, has no unsafe operations at all.
We need to check whether these features are enough; if not, we should update the Language template... —[[User:Dkf|Donal Fellows]] 12:26, 1 June 2009 (UTC)
Anonymous user