18 lines
350 B
Haskell
18 lines
350 B
Haskell
data Control
|
|
= Master [Text]
|
|
| Node
|
|
| Reset
|
|
deriving (Eq, Show)
|
|
|
|
instance Semigroup Control where
|
|
Reset <> _ = Node
|
|
_ <> Reset = Node
|
|
Node <> Node = Node
|
|
Node <> m@(Master _) = m
|
|
m@(Master _) <> Node = m
|
|
(Master m0) <> (Master m1) = Master (m0 <> m1)
|
|
|
|
-- hello
|
|
instance Monoid Control where
|
|
mempty = Node
|
|
mappend a b = a <> b
|