diff options
| author | Calvin <calvin@EESI> | 2013-03-15 15:26:20 -0400 | 
|---|---|---|
| committer | Calvin <calvin@EESI> | 2013-03-15 15:26:20 -0400 | 
| commit | b632667ce57af89691407bb8668e1512775278ae (patch) | |
| tree | b5742cef185f1cc4a7ba6005b5b4116ce7558a01 /src/nbc/stopwatch.sml | |
| parent | 39e39f82cc38d71018882b0aaaf58255858a7c56 (diff) | |
nbc added
Diffstat (limited to 'src/nbc/stopwatch.sml')
| -rw-r--r-- | src/nbc/stopwatch.sml | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/src/nbc/stopwatch.sml b/src/nbc/stopwatch.sml new file mode 100644 index 0000000..43547ed --- /dev/null +++ b/src/nbc/stopwatch.sml @@ -0,0 +1,24 @@ +signature STOPWATCH = sig +	exception FinishWithoutStart +	val start: string -> unit +	val finish: unit -> unit +end +structure Stopwatch :> STOPWATCH = struct +	exception FinishWithoutStart +	local +		val time = ref NONE +	in +		fun start doing = ( +			print (concat [doing, "..."]) +			; time := SOME (Time.now ()) +		) +		fun finish () = case !time of +			SOME t => ( +				print (concat [ +					" done in " +					, Time.toString (Time.- (Time.now (), t)) +					, " seconds.\n" +				]); time := NONE +			) | NONE => raise FinishWithoutStart +	end +end  | 
