OCamlでintをべき乗する関数を作る

OCamlではなぜかintのべき乗を求める演算子が用意されていないようです。 floatなら5. ** 3.と言う感じで**演算子で簡単にべき乗を求められるのですが。。。

パット見た感じ、標準でpow関数も無い様です。 探したらありそうな気もしますが、せっかくなので自分でintの値のべき乗を求める関数を再帰関数として定義してみました。

 # 普通の再帰関数を定義
utop # let rec pow value index =
if index <= 0 then 1
else value * pow value (index - 1);;
val pow : int -> int -> int = <fun>

 # もしくはfunctionでパターンマッチバージョン
utop # let rec pow2 = function
(a, 0) -> 1
|(a, b) -> a * pow2 (a, b - 1);;
val pow2 : int * int -> int = <fun>

utop # assert((pow 5 1) = 5);;
utop # assert((pow 5 2) = 5 * 5);;
utop # assert((pow 5 3) = 5 * 5 * 5);;

utop # assert(pow2(5, 1) = 5);;
utop # assert(pow2(5, 2) = 5 * 5);;
utop # assert(pow2(5, 3) = 5 * 5 * 5);;

公開日:2019/10/28

OCaml

About me

ドイツの現地企業でWeb Developer/System Administratorとして働いているアラフォーおじさんです。

プログラミングとかコンピュータに関する事がメインですが、日常的なメモとか雑多なことも書きます。

Links :
目次