aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/elab_util.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-08-09 19:23:31 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-08-09 19:23:31 -0400
commit0186af3d727b1b92e7b63925500a21d5e412d7b4 (patch)
tree6f836a2c222f87f521569b4110e0422d4291d37a /src/elab_util.sml
parent3232399b3893f93678a2d1a519bd0d4011275dba (diff)
'Option' datatype encoding
Diffstat (limited to 'src/elab_util.sml')
-rw-r--r--src/elab_util.sml12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/elab_util.sml b/src/elab_util.sml
index 1c67fbb2..5fa0fa27 100644
--- a/src/elab_util.sml
+++ b/src/elab_util.sml
@@ -30,10 +30,14 @@ structure ElabUtil :> ELAB_UTIL = struct
open Elab
fun classifyDatatype xncs =
- if List.all (fn (_, _, NONE) => true | _ => false) xncs then
- Enum
- else
- Default
+ case xncs of
+ [(_, _, NONE), (_, _, SOME _)] => Option
+ | [(_, _, SOME _), (_, _, NONE)] => Option
+ | _ =>
+ if List.all (fn (_, _, NONE) => true | _ => false) xncs then
+ Enum
+ else
+ Default
structure S = Search