let foo = \ n -> begin setX 1; setY n; while getY > 0 do begin let r = getX in let n = getY in begin if n==10 then break else if n==3 then begin setX r; setY (n-1); continue end else 1; setX (r*n); setY (n-1) end end; getX end in foo 9