Category talk:Tcl
Tasks Unlikely to get Implemented
This is a short discussion of the tasks that are marked with the omit template. —Dkf 09:14, 21 May 2009 (UTC)
- This is a specialization of the Parametric Polymorphism task, so all comments there apply here too.
- Need the concept of proof in the language for this, and this is really an area that Tcl doesn't address. The formal way to fix it is to write a theorem prover in Tcl, but that'd be a ridiculous amount of work.
- It's not that we can't do this. It's that we don't. One of the good things about Tcl is exactly not having to deal with this sort of thing. It's a whole layer of stuff that we avoid. But if we were to do it, we'd be looking in terms of:
- Using
string repeat
orlrepeat
- Using SWIG or critcl to write a bridge to a C allocator
- Showing how to do the classic handle-for-structure extension scheme, as documented in JO's book (and updated for the modern age)
- Using
- Tcl doesn't have static typing, making this task ridiculously trivial/non-applicable. Note also that the task itself states that it only applies to languages with static typing.
Language features
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 upvar
command, which allows the looking-up of a variable in one scope and aliasing it to another variable in the current scope. —Dkf 10:16, 31 May 2009 (UTC)