{"action":"closed","issue":{"url":"https://api.github.com/repos/jstolarek/slicer/issues/35","repository_url":"https://api.github.com/repos/jstolarek/slicer","labels_url":"https://api.github.com/repos/jstolarek/slicer/issues/35/labels{/name}","comments_url":"https://api.github.com/repos/jstolarek/slicer/issues/35/comments","events_url":"https://api.github.com/repos/jstolarek/slicer/issues/35/events","html_url":"https://github.com/jstolarek/slicer/issues/35","id":209120369,"number":35,"title":"Better abstraction of reference store","user":{"login":"jstolarek","id":1597921,"avatar_url":"https://avatars.githubusercontent.com/u/1597921?v=3","gravatar_id":"","url":"https://api.github.com/users/jstolarek","html_url":"https://github.com/jstolarek","followers_url":"https://api.github.com/users/jstolarek/followers","following_url":"https://api.github.com/users/jstolarek/following{/other_user}","gists_url":"https://api.github.com/users/jstolarek/gists{/gist_id}","starred_url":"https://api.github.com/users/jstolarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jstolarek/subscriptions","organizations_url":"https://api.github.com/users/jstolarek/orgs","repos_url":"https://api.github.com/users/jstolarek/repos","events_url":"https://api.github.com/users/jstolarek/events{/privacy}","received_events_url":"https://api.github.com/users/jstolarek/received_events","type":"User","site_admin":false},"labels":[{"id":531727426,"url":"https://api.github.com/repos/jstolarek/slicer/labels/code%20cleanup","name":"code cleanup","color":"fbca04","default":false}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2017-02-21T11:43:45Z","updated_at":"2017-02-22T12:53:43Z","closed_at":"2017-02-22T12:53:43Z","body":"Reference store is an `IntMap`, with store labels being an `Int`. There are some helper functions that work on a store (`deref`, `storeInsert`, `insertStoreHole`). This is all a bit messy. `StoreLabel` should be a newtype, not a type synonym, `Store` should be a record with a map and reference counter (currently handled by `Eval` monad) and it should be completely abstract.\r\n\r\n# TODO\r\n\r\n  * [x] `StoreLabel` a newtype\r\n  * [x] `StoreLabel` instance of Valuable\r\n  * [x] `StoreLabels` a set\r\n  * [x] `Store` a pair of store and reference count\r\n  * [x] `Store` abstraction used in evaluation and repl monads."}}
{"actor":{"display_login":"jstolarek"}}