package require Tcl 8.6 namespace import tcl::mathfunc::min namespace import tcl::mathfunc::max proc {#} args {} proc llen {lst} { return [llength $lst] } proc slen {str} { return [string length $str] } proc trim args { return [uplevel [concat string trim $args]] } proc replace {str a b} { return [string map [list $a $b] $str] } proc ladd {list} { set t 0 foreach x $list { incr t $x } return $t } proc lmul {list} { set p 1 foreach x $list { set p [expr {$p * $x}] } return $p } # split s on a substring proc splitstr {s sep} { # replace $sep with ascii char 30, aka "record separator" return [split [replace $s $sep "\x1E"] "\x1E"] } proc must_regexp args { if {! [uplevel [concat regexp $args]]} { error "regexp failed" } }