23 lines
385 B
Haskell
23 lines
385 B
Haskell
module Propellor.Types.Val where
|
|
|
|
import Data.Monoid
|
|
|
|
import Propellor.Types.Empty
|
|
|
|
data Val a = Val a | NoVal
|
|
deriving (Eq, Show)
|
|
|
|
instance Monoid (Val a) where
|
|
mempty = NoVal
|
|
mappend old new = case new of
|
|
NoVal -> old
|
|
_ -> new
|
|
|
|
instance Empty (Val a) where
|
|
isEmpty NoVal = True
|
|
isEmpty _ = False
|
|
|
|
fromVal :: Val a -> Maybe a
|
|
fromVal (Val a) = Just a
|
|
fromVal NoVal = Nothing
|