1 (* Copyright (C
) 1999-2006 Henry Cejtin
, Matthew Fluet
, Suresh
2 * Jagannathan
, and Stephen Weeks
.
3 * Copyright (C
) 1997-2000 NEC Research Institute
.
5 * MLton is released under a BSD
-style license
.
6 * See the file MLton
-LICENSE for details
.
11 datatype t
= T
of {inner
: t option
,
15 fun layout (T
{inner
, name
, obj
}): Layout
.t
=
22 seq
[str (concat
["invalid ", name
, ": "]), obj
]]
27 fun check
' (name
: string,
28 ok
: unit
-> 'a option
,
29 layout
: unit
-> Layout
.t
): 'a
=
30 case ok () handle E e
=> raise E (T
{inner
= SOME e
,
33 NONE
=> raise E (T
{inner
= NONE
,
38 fun boolToUnitOpt b
= if b
then SOME () else NONE
40 fun check (name
, ok
, layout
) =
41 check
' (name
, boolToUnitOpt
o ok
, layout
)