let fact = \ n -> begin setX 1; setY n; while getY > 0 do begin setX (getX*getY); setY (getY-1) end; getX end in fact 9