Category talk:Tcl: Difference between revisions
No edit summary |
(→Language features: new section) |
||
Line 13: | Line 13: | ||
[[Parametric Polymorphism]] |
[[Parametric Polymorphism]] |
||
: 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. |
: 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 <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. |
Revision as of 10:15, 31 May 2009
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.