(*********************************************************************) (* Note: this code intentionally contains an error; see text *) (*********************************************************************) fun comb2(n,m) = let exception OutOfRange of int*int in if n <= 0 then raise OutOfRange(n,m) else if m<0 orelse m>n then raise OutOfRange(n,m) else if m=0 orelse m=n then 1 else comb2(n-1,m) + comb2(n-1,m-1) end; fun comb(n,m) = comb2(n,m) handle OutOfRange(0,0) => 1 | OutOfRange(n,m) => ( print("out of range: n="); print(Int.toString(n)); print(" m="); print(Int.toString(m)); print("\n"); 0 );