整数リストの要素すべての積を返す関数 prod_list を定義しなさい。リスト要素の一つでも 0 が含まれている場合には,prod_list の適用結果は常に 0 になるので,例外処理を使用 して,0 を発見したら残りの計算を行わずに中断して 0 を返すように定義しなさい。
まずは 0 をかけるという例外を宣言しよう。
# exception Multiple_zero;; exception Multiple_zero
でもって prod_list の定義。
# let prod_list lis = let prod' x y = if y = 0 then raise Multiple_zero else x * y in try List.fold_left prod' 1 lis with Multiple_zero -> 0 ;; val prod_list : int list -> int = <fun>
これでいいはず。
# prod_list [1; 3; 7; 2; 9];; - : int = 378 # prod_list [5; 2; 0; 8; 4];; - : int = 0