%export vague is_it_clear value_if_clear create_vague
abstype vague
with is_it_clear :: vague -> bool
     value_if_clear :: vague -> bool
     create_vague :: (bool,bool) -> vague
     showvague :: vague -> [char]
  vague == rep_vague
    rep_vague ::= Yes | No | Maybe
    is_it_clear v = v ~= Maybe
    value_if_clear Yes = True
    value_if_clear No = False
    create_vague (False,b) = Maybe
    create_vague (True,b) = Yes, b
                          = No, ~b
    showvague v = "Clearly True", v=Yes
                = "Clearly False", v=No
                = "UNCLEAR VALUE", v=Maybe
