Cはfoldを使って実装しています。答えが大きいので、初期値を1Lとします。ただし、この関数は第2引数が0だと正しい答えが出ません。
function fold($f, $init) { begin { $x = $init } process { $x = & $f $x $_ } end { $x } } function C($n, $m) { 1..$m | fold { $args[0] * ($n - $args[1] + 1) / $args[1] } 1L } C 40 20