Posted to tcl by kbk at Thu Nov 30 16:34:47 GMT 2017view pretty
# [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"