|
From: Vesa K. <ve...@ml...> - 2007-01-12 04:24:23
|
Initial commit of a lib of misc utils to be refactored. ---------------------------------------------------------------------- A mltonlib/trunk/com/ssh/misc-util/unstable/basic.sml ---------------------------------------------------------------------- Added: mltonlib/trunk/com/ssh/misc-util/unstable/basic.sml =================================================================== --- mltonlib/trunk/com/ssh/misc-util/unstable/basic.sml 2007-01-12 12:23:48 UTC (rev 5017) +++ mltonlib/trunk/com/ssh/misc-util/unstable/basic.sml 2007-01-12 12:24:12 UTC (rev 5018) @@ -0,0 +1,28 @@ +(* Copyright (C) 2007 SSH Communications Security, Helsinki, Finland + * + * This code is released under the MLton license, a BSD-style license. + * See the LICENSE file or http://mlton.org/License for details. + *) + +(** + * Some basic combinators; the kind of combinators you would expect to see + * in the language standard library or prelude. + *) +structure Basic :> sig + val repeat : 'a UnOp.t -> Int.t -> 'a UnOp.t + (** {repeat f n x} repeats {f} {n}-times starting with {x}. *) + + val += : (Int.t Ref.t * Int.t) Effect.t + (** {c += n} is equivalent to {c := !c + n}. *) + + val -= : (Int.t Ref.t * Int.t) Effect.t + (** {c -= n} is equivalent to {c := !c - n}. *) +end = struct + fun repeat f n x = if n = 0 then x else repeat f (n-1) (f x) + + fun c += n = c := !c + n + fun c -= n = c := !c - n +end + +(* Expose all of the basic combinators at the top-level for convenience. *) +open Basic Property changes on: mltonlib/trunk/com/ssh/misc-util/unstable/basic.sml ___________________________________________________________________ Name: svn:eol-style + native |