Posted to tcl by kbk at Thu Nov 30 16:34:47 GMT 2017view raw
- # [lfoldl] that's analogous to [lmap]
- proc lfoldl {vars init list code} {
- lassign $vars lvar rvar
- upvar 1 $lvar l $rvar r
- set l $init
- foreach r $list {
- # need some catch gubbins here
- set l [uplevel 1 $code]
- }
- return $l
- }
- set l {1 2 2 2 2 3 3 3 3 3 3 4 4 4 4 5}
- set n [llength $l]
- set sum [lfoldl {p q} 0.0 $l {expr {$p + $q}}]
- set mean [expr {$sum/$n}]
- set ss [lfoldl {p q} 0 $l {expr {$p + ($q - $mean)**2}}]
- set stdev [expr {sqrt($ss / ($n-1))}]
- puts "mean $mean standard deviation $stdev"