(* while (p) do { ... } *) let rec while_loop p f x = if (p x) then while_loop p f (f x) else x ;; (* repeat { ... } until (p) *) let rec repeat_loop p f x = let fx = f x in if (p fx) then fx else repeat_loop p f fx ;; (* Funktionen testen *) while_loop (fun x -> x < 10000) (fun y -> y+5) 5 ;; repeat_loop (fun x -> x > 10000) (fun y -> y+5) 5 ;; (* val while_loop : ('a -> bool) -> ('a -> 'a) -> 'a -> 'a = val repeat_loop : ('a -> bool) -> ('a -> 'a) -> 'a -> 'a = - : int = 10000 - : int = 10005 *)