{"action":"created","issue":{"url":"https://api.github.com/repos/grumply/Ef/issues/12","repository_url":"https://api.github.com/repos/grumply/Ef","labels_url":"https://api.github.com/repos/grumply/Ef/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/grumply/Ef/issues/12/comments","events_url":"https://api.github.com/repos/grumply/Ef/issues/12/events","html_url":"https://github.com/grumply/Ef/issues/12","id":120510048,"number":12,"title":"Improved object instantiation","user":{"login":"grumply","id":12224664,"avatar_url":"https://avatars.githubusercontent.com/u/12224664?v=3","gravatar_id":"","url":"https://api.github.com/users/grumply","html_url":"https://github.com/grumply","followers_url":"https://api.github.com/users/grumply/followers","following_url":"https://api.github.com/users/grumply/following{/other_user}","gists_url":"https://api.github.com/users/grumply/gists{/gist_id}","starred_url":"https://api.github.com/users/grumply/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grumply/subscriptions","organizations_url":"https://api.github.com/users/grumply/orgs","repos_url":"https://api.github.com/users/grumply/repos","events_url":"https://api.github.com/users/grumply/events{/privacy}","received_events_url":"https://api.github.com/users/grumply/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/grumply/Ef/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/grumply/Ef/labels/invalid","name":"invalid","color":"e6e6e6"},{"url":"https://api.github.com/repos/grumply/Ef/labels/wontfix","name":"wontfix","color":"ffffff"}],"state":"open","locked":false,"assignee":{"login":"grumply","id":12224664,"avatar_url":"https://avatars.githubusercontent.com/u/12224664?v=3","gravatar_id":"","url":"https://api.github.com/users/grumply","html_url":"https://github.com/grumply","followers_url":"https://api.github.com/users/grumply/followers","following_url":"https://api.github.com/users/grumply/following{/other_user}","gists_url":"https://api.github.com/users/grumply/gists{/gist_id}","starred_url":"https://api.github.com/users/grumply/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grumply/subscriptions","organizations_url":"https://api.github.com/users/grumply/orgs","repos_url":"https://api.github.com/users/grumply/repos","events_url":"https://api.github.com/users/grumply/events{/privacy}","received_events_url":"https://api.github.com/users/grumply/received_events","type":"User","site_admin":false},"milestone":null,"comments":1,"created_at":"2015-12-04T23:52:17Z","updated_at":"2016-02-03T08:54:20Z","closed_at":null,"body":"Needed:\r\n\r\n* IsList instance for Attrs (not currently possible as far as I see)\r\n* Sorted list for Attrs\r\n\r\nOnce we have these, it will be possible to implement a much simpler smart\r\nconstructor for objects that guarantees ordering. The sorted list for Attrs\r\nwould guarantee that there is a single constructed form for the objects.\r\nMuch easier to guarantee Pattern-Object compatability then since Patterns\r\nimplement rearrange.\r\n\r\n```haskell\r\n  let\r\n    obj0 def =\r\n        new [manager,exiter,getter,setter,store def]\r\n\r\n    obj1 def =\r\n        new [store def,setter,getter,exiter,manager]\r\n\r\n    defaultState =\r\n        0 :: Int\r\n\r\n  in\r\n    typeOf (obj0 defaultState) == typeOf (obj1 defaultState) === True\r\n```\r\n\r\nI attempted to lift Fingerprints to the type level, but failed. I feel\r\na type Nat representation of a Fingerprint is an important extension of\r\nthe typeable interface. I assume Fingerprints are hash-based and could\r\nthus be witnessed by Template Haskell; this is a possible approach."},"comment":{"url":"https://api.github.com/repos/grumply/Ef/issues/comments/179100032","html_url":"https://github.com/grumply/Ef/issues/12#issuecomment-179100032","issue_url":"https://api.github.com/repos/grumply/Ef/issues/12","id":179100032,"user":{"login":"grumply","id":12224664,"avatar_url":"https://avatars.githubusercontent.com/u/12224664?v=3","gravatar_id":"","url":"https://api.github.com/users/grumply","html_url":"https://github.com/grumply","followers_url":"https://api.github.com/users/grumply/followers","following_url":"https://api.github.com/users/grumply/following{/other_user}","gists_url":"https://api.github.com/users/grumply/gists{/gist_id}","starred_url":"https://api.github.com/users/grumply/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grumply/subscriptions","organizations_url":"https://api.github.com/users/grumply/orgs","repos_url":"https://api.github.com/users/grumply/repos","events_url":"https://api.github.com/users/grumply/events{/privacy}","received_events_url":"https://api.github.com/users/grumply/received_events","type":"User","site_admin":false},"created_at":"2016-02-03T08:54:20Z","updated_at":"2016-02-03T08:54:20Z","body":"The current mechanisms are sufficient for constructing complex objects. Further modifications to construction should be in a layer higher than that of Ef itself in which this level of management of complex instantiation should be controlled."}}