Haskell

data OneOrNone a = None | One a deriving (Show)
s (One o) = "got one! " ++ show o
s None = "don't got one"
main = do print (s (One 7))
          print (s (One "hello"))
          print (s (None :: OneOrNone ()))