diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-08-09 19:23:31 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-08-09 19:23:31 -0400 |
commit | 0186af3d727b1b92e7b63925500a21d5e412d7b4 (patch) | |
tree | 6f836a2c222f87f521569b4110e0422d4291d37a /src/elab_util.sml | |
parent | 3232399b3893f93678a2d1a519bd0d4011275dba (diff) |
'Option' datatype encoding
Diffstat (limited to 'src/elab_util.sml')
-rw-r--r-- | src/elab_util.sml | 12 |
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 |