繰り返しの構造を関数(再帰関数)にすることもできる。
# 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>
リストの各要素を出力するときとかに使える。