当然ですが、掛けていくだけですね。数字を配列にすれば最後も簡単です。
function fold($f, $x0) {
begin { $x = $x0 }
process { $x = &$f $x $_ }
end { $x }
}
function mul($x, $y) {
$c = 0
foreach($e in $x) {
$n = $e * $y + $c
$r = $n % 10
$r
$c = ($n - $r) / 10
}
while($c -gt 0) {
$r = $c % 10
$r
$c = ($c - $r) / 10
}
}
function factorial($n) {
1..$n | fold { mul $args[0] $args[1] } @(1)
}
(factorial 100 | measure -sum).sum