summaryrefslogtreecommitdiff
path: root/src/Propellor/Types/Val.hs
blob: 8890bee8bcbb6ea68cf420a22042a9423f96c861 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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