{"action":"closed","issue":{"url":"https://api.github.com/repos/ucsd-progsys/liquidhaskell/issues/431","labels_url":"https://api.github.com/repos/ucsd-progsys/liquidhaskell/issues/431/labels{/name}","comments_url":"https://api.github.com/repos/ucsd-progsys/liquidhaskell/issues/431/comments","events_url":"https://api.github.com/repos/ucsd-progsys/liquidhaskell/issues/431/events","html_url":"https://github.com/ucsd-progsys/liquidhaskell/issues/431","id":102853984,"number":431,"title":"Change how Configs are merged","user":{"login":"christetreault","id":5084845,"avatar_url":"https://avatars.githubusercontent.com/u/5084845?v=3","gravatar_id":"","url":"https://api.github.com/users/christetreault","html_url":"https://github.com/christetreault","followers_url":"https://api.github.com/users/christetreault/followers","following_url":"https://api.github.com/users/christetreault/following{/other_user}","gists_url":"https://api.github.com/users/christetreault/gists{/gist_id}","starred_url":"https://api.github.com/users/christetreault/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christetreault/subscriptions","organizations_url":"https://api.github.com/users/christetreault/orgs","repos_url":"https://api.github.com/users/christetreault/repos","events_url":"https://api.github.com/users/christetreault/events{/privacy}","received_events_url":"https://api.github.com/users/christetreault/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ucsd-progsys/liquidhaskell/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"closed","locked":false,"assignee":{"login":"christetreault","id":5084845,"avatar_url":"https://avatars.githubusercontent.com/u/5084845?v=3","gravatar_id":"","url":"https://api.github.com/users/christetreault","html_url":"https://github.com/christetreault","followers_url":"https://api.github.com/users/christetreault/followers","following_url":"https://api.github.com/users/christetreault/following{/other_user}","gists_url":"https://api.github.com/users/christetreault/gists{/gist_id}","starred_url":"https://api.github.com/users/christetreault/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christetreault/subscriptions","organizations_url":"https://api.github.com/users/christetreault/orgs","repos_url":"https://api.github.com/users/christetreault/repos","events_url":"https://api.github.com/users/christetreault/events{/privacy}","received_events_url":"https://api.github.com/users/christetreault/received_events","type":"User","site_admin":false},"milestone":null,"comments":22,"created_at":"2015-08-24T17:56:29Z","updated_at":"2015-08-27T15:47:42Z","closed_at":"2015-08-27T15:47:42Z","body":"Currently, the Liquid Haskell `Config` type has a `Monoid` instance and this is used to merge configurations (environment variable + command linea args = `Config`). \r\n\r\nAfter [some discussion](https://github.com/ucsd-progsys/liquid-fixpoint/issues/90#issuecomment-133581372) it seems that this might not be the best way. @gridaphobe suggested a new function `mergeConfig :: Config -> Config -> Config`, not bound by the `Monoid` laws that can be used to merge the configs an a sane manner. This function would merge the configs such that higher priority items override lower priority with `priority = env < file < cmdline`."}}