From 472759eef32534fd1f1e14bb05f5cb97b18de760 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 15 Mar 2017 15:36:29 -0400 Subject: Added Monoid instances for Property and RevertableProperty. * Added Monoid instances for Property and RevertableProperty. * Removed applyToList. Instead, use mconcat. (API change) Eg, if you had: applyToList accountFor [User "joey", User "root"] use instead: mconcat (map accountFor [User "joey", User "root"]) mappend x y is basically the same as x `before` y. In particular, if x fails to be ensured, it won't ensure y. This seems to make sense, since applyToList had that behavior, and so does the Monoid for Propellor Result. The alternative would be to try to ensure both and combine the results. However, I don't see any reason to do it that way. It would be nice if the description of both properties were displayed when ensuring the combination. But then, it would need to display eg: ensuring x..ok ensuring y..failed ensuring x and ensuring y..failed Without a way to get rid of that redundant last line, I don't want to do that. Note that the haddocks for the Monoid instances need a really wide screen to display! This is IMHO an infelicity in haddock, and I can't do anything about it really. This commit was sponsored by Fernando Jimenez on Patreon. --- src/Propellor/Types/Core.hs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/Propellor/Types/Core.hs') diff --git a/src/Propellor/Types/Core.hs b/src/Propellor/Types/Core.hs index dcd206eb..a805f561 100644 --- a/src/Propellor/Types/Core.hs +++ b/src/Propellor/Types/Core.hs @@ -48,9 +48,10 @@ instance LiftPropellor Propellor where instance LiftPropellor IO where liftPropellor = liftIO +-- | When two actions are appended together, the second action +-- is only run if the first action does not fail. instance Monoid (Propellor Result) where mempty = return NoChange - -- | The second action is only run if the first action does not fail. mappend x y = do rx <- x case rx of -- cgit v1.2.3