繰り返しのための高階関数

繰り返しの構造を関数(再帰関数)にすることもできる。

# let rec whle condition body =
if condition () then
begin body (); whle condition body end
;;
val whle : (unit -> bool) -> (unit -> 'a) -> unit = <fun>

condition () が真であるあいだ body を繰り返す。条件 condition () が単なる真偽値の式ではなくて unit -> bool 型の関数なところがミソ。たとえばファイルからの入力など。

もう一つ,リストの各要素に対して繰り返す関数。

# let rec iter f = function
[] -> ()
| a :: rest -> begin f a; iter f rest end
;;
val iter : ('a -> 'b) -> 'a list -> unit = <fun>

リストの各要素を出力するときとかに使える。

カテゴリー: OCaml パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください