TIP #269: ADD 'STRING IS LIST' TO THE 'STRING IS' SUBCOMMAND ============================================================== Version: $Revision: 1.7 $ Author: Joe Mistachkin State: Final Type: Project Tcl-Version: 8.5 Vote: Done Created: Friday, 19 May 2006 URL: https://tip.tcl-lang.org269.html Post-History: ------------------------------------------------------------------------- ABSTRACT ========== The *string* command supports tests for a number of Tcl's basic types, for example, integers, doubles, and booleans. This TIP proposes adding lists to the set of things that can be checked for. RATIONALE =========== The *string* command includes tests for the common Tcl types: *string is boolean*, *string is double* and *string is integer*. Unaccountably, *string is list* is missing from the list, making it difficult for an input validation procedure to determine whether, in fact, a string contains a proper list. Currently, something similar to the following incantation is required: set is_list [expr {![catch {llength $str}]}] The above construct (and others like it) are extremely counterintuitive, especially to people without intimate knowledge of Tcl. Compare and contrast with: set is_list [string is list $str] Since *string is* currently serves in this capacity for determining whether a string can be correctly interpreted as an integer or double, it seems only natural to extend it so that it can determine whether a string can be correctly interpreted as a list. SPECIFICATION =============== This document proposes augmenting the *string is* command with a *string is list* subcommand, as follows: *string* *is* *list* ?*-strict*? ?*-failindex* /var/? /str/ The result will be *1* if the string has proper list structure; otherwise, it will be *0*. The option *-strict* is accepted for syntactic compatability with other forms of *string is* but has no effect since empty strings are proper lists. REFERENCE IMPLEMENTATION ========================== A reference implementation of this TIP is available []. COPYRIGHT =========== This document has been placed in the public domain. ------------------------------------------------------------------------- TIP AutoGenerator - written by Donal K. Fellows