| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2015-01-24 | use type level functions to fix type inference for `require` | Joey Hess | |
| 2015-01-24 | moving to using the GADT | Joey Hess | |
| The problem this exposes has to do with requires. As implemented, requires yields either a Property HasInfo or a Property NoInfo depending on its inputs. That works. But look what happens when it's used: *Propellor.Types> let foo = IProperty "foo" (return NoChange) mempty mempty *Propellor.Types> let bar = IProperty "bar" (return NoChange) mempty mempty *Propellor.Types> foo `requires` bar <interactive>:17:5: No instance for (Requires (Property HasInfo) (Property HasInfo) r0) arising from a use of `requires' The type variable `r0' is ambiguous Possible fix: add a type signature that fixes these type variable(s) Note: there is a potential instance available: instance Requires (Property HasInfo) (Property HasInfo) (Property HasInfo) -- Defined at Propellor/Types.hs:167:10 Possible fix: add an instance declaration for (Requires (Property HasInfo) (Property HasInfo) r0) In the expression: foo `requires` bar In an equation for `it': it = foo `requires` bar This can be avoided by specifying the result type: *Propellor.Types> (foo `requires` bar) :: Property HasInfo property "foo" But then when multiple `requires` are given, the result type has to be given each time: *Propellor.Types> (foo `requires` bar `requires` bar) :: Property HasInfo <interactive>:22:6: No instance for (Requires (Property HasInfo) (Property HasInfo) x0) arising from a use of `requires' The type variable `x0' is ambiguous Possible fix: add a type signature that fixes these type variable(s) Note: there is a potential instance available: instance Requires (Property HasInfo) (Property HasInfo) (Property HasInfo) -- Defined at Propellor/Types.hs:167:10 Possible fix: add an instance declaration for (Requires (Property HasInfo) (Property HasInfo) x0) In the first argument of `requires', namely `foo `requires` bar' In the expression: (foo `requires` bar `requires` bar) :: Property HasInfo In an equation for `it': it = (foo `requires` bar `requires` bar) :: Property HasInfo <interactive>:22:21: No instance for (Requires x0 (Property HasInfo) (Property HasInfo)) arising from a use of `requires' The type variable `x0' is ambiguous Possible fix: add a type signature that fixes these type variable(s) Note: there are several potential instances: instance Requires (Property NoInfo) (Property HasInfo) (Property HasInfo) -- Defined at Propellor/Types.hs:175:10 instance Requires (Property HasInfo) (Property HasInfo) (Property HasInfo) -- Defined at Propellor/Types.hs:167:10 Possible fix: add an instance declaration for (Requires x0 (Property HasInfo) (Property HasInfo)) In the expression: (foo `requires` bar `requires` bar) :: Property HasInfo In an equation for `it': it = (foo `requires` bar `requires` bar) :: Property HasInfo *Propellor.Types> (((foo `requires` bar) :: Property HasInfo) `requires` bar) :: Property HasInfo property "foo" Yuggh! | |||
| 2015-01-24 | added GADT to determine between a property with info and without | Joey Hess | |
| Not yet used | |||
| 2015-01-23 | OS.preserveNetwork finally written | Joey Hess | |
| 2015-01-23 | propellor spin | Joey Hess | |
| 2015-01-23 | Added more network interface configuration properties. | Joey Hess | |
| 2015-01-22 | propellor spin | Joey Hess | |
| 2015-01-22 | propellor spin | Joey Hess | |
| 2015-01-22 | propellor spin | Joey Hess | |
| 2015-01-21 | reorg | Joey Hess | |
| 2015-01-21 | propellor spin | Joey Hess | |
| 2015-01-21 | Added journald configuration properties. | Joey Hess | |
| 2015-01-21 | propellor spin | Joey Hess | |
| 2015-01-21 | Added systemd configuration properties. | Joey Hess | |
| 2015-01-19 | add back a warning aboit info propigation to ensureProperty | Joey Hess | |
| 2015-01-19 | fix haddock | Joey Hess | |
| 2015-01-19 | clean up exports | Joey Hess | |
| 2015-01-19 | export | Joey Hess | |
| 2015-01-19 | more reorg | Joey Hess | |
| 2015-01-19 | split out types to improve haddock for Propellor.Types | Joey Hess | |
| 2015-01-19 | Fix info propigation from fallback combinator's second Property. | Joey Hess | |
| 2015-01-19 | use git.joeyh.name in preference to git.kitenet.net | Joey Hess | |
| 2015-01-19 | avoid haddock warnings | Joey Hess | |
| 2015-01-19 | rename HostLike to PropAccum | Joey Hess | |
| This is more general; it doesn't need to contain a Host. It would, for example, be possible to make Property itself be an instance of PropAccum. | |||
| 2015-01-18 | propellor spin | Joey Hess | |
| 2015-01-18 | propellor spin | Joey Hess | |
| 2015-01-18 | Property tree | Joey Hess | |
| Properties now form a tree, instead of the flat list used before. This simplifies propigation of Info from the Properties used inside a container to the outer host; the Property that docks the container on the host can just have as child properties all the inner Properties, and their Info can then be gathered recursively. (Although in practice it still needs to be filtered, since not all Info should propigate out of a container.) Note that there is no change to how Properties are actually satisfied. Just because a Property lists some child properties, this does not mean they always have their propertySatisfy actions run. It's still up to the parent property to run those actions. That's necessary so that a container's properties can be satisfied inside it, not outside. It also allows property combinators to add the combined Properties to their childProperties list, even if, like onChange, they don't always run the child properties at all. Testing: I tested that the exact same Info is calculated before and after this change, for every Host in my config file. | |||
| 2015-01-15 | propellor spin | Joey Hess | |
| 2015-01-15 | ascii art update | Joey Hess | |
| 2015-01-15 | Add descriptions of how to set missing fields to --list-fields output. ↵ | Joey Hess | |
| (Minor API changes) | |||
| 2015-01-15 | typo; columns vs rows | Joey Hess | |
| No behavior change | |||
| 2015-01-15 | avoid unncessary padding on last column in table | Joey Hess | |
| 2015-01-15 | propellor spin | Joey Hess | |
| 2015-01-15 | propellor spin | Joey Hess | |
| 2015-01-15 | prep release | Joey Hess | |
| 2015-01-09 | propellor spin | Joey Hess | |
| 2015-01-09 | propellor spin | Joey Hess | |
| 2015-01-09 | propellor spin | Joey Hess | |
| 2015-01-09 | propellor spin | Joey Hess | |
| 2015-01-09 | propellor spin | Joey Hess | |
| 2015-01-08 | propellor spin | Joey Hess | |
| 2015-01-08 | propellor spin | Joey Hess | |
| 2015-01-08 | make both lines pastable together | Joey Hess | |
| 2015-01-08 | propellor spin | Joey Hess | |
| 2015-01-08 | changelog | Joey Hess | |
| 2015-01-08 | propellor spin | Joey Hess | |
| 2015-01-08 | propellor spin | Joey Hess | |
| 2015-01-08 | propellor spin | Joey Hess | |
| 2015-01-08 | propellor spin | Joey Hess | |
| 2015-01-08 | propellor spin | Joey Hess | |
