{"action":"created","issue":{"url":"https://api.github.com/repos/cram-code/cram_core/issues/29","labels_url":"https://api.github.com/repos/cram-code/cram_core/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/cram-code/cram_core/issues/29/comments","events_url":"https://api.github.com/repos/cram-code/cram_core/issues/29/events","html_url":"https://github.com/cram-code/cram_core/issues/29","id":57013431,"number":29,"title":"Why designator descriptions as lists of lists?","user":{"login":"airballking","id":1560050,"avatar_url":"https://avatars.githubusercontent.com/u/1560050?v=3","gravatar_id":"","url":"https://api.github.com/users/airballking","html_url":"https://github.com/airballking","followers_url":"https://api.github.com/users/airballking/followers","following_url":"https://api.github.com/users/airballking/following{/other_user}","gists_url":"https://api.github.com/users/airballking/gists{/gist_id}","starred_url":"https://api.github.com/users/airballking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/airballking/subscriptions","organizations_url":"https://api.github.com/users/airballking/orgs","repos_url":"https://api.github.com/users/airballking/repos","events_url":"https://api.github.com/users/airballking/events{/privacy}","received_events_url":"https://api.github.com/users/airballking/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/cram-code/cram_core/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/cram-code/cram_core/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-02-09T10:34:41Z","updated_at":"2015-02-09T12:32:09Z","closed_at":null,"body":"Our designator descriptions are lists of lists. Conceptually, however, we always refer to them as lists of key-value pairs. \r\n\r\nFor a list of key-value pairs, Common LISP has standard representations (alist, plist, or hash-table). Would it make sense to switch our internal representations of designator descriptions to for instance alists? It could mean less custom code, and more standard Common LISP code.\r\n\r\n@moesenle @gaya- @fairlight1337 @gheorghelisca @yazdani @bbrieber @mpomarlan"},"comment":{"url":"https://api.github.com/repos/cram-code/cram_core/issues/comments/73501138","html_url":"https://github.com/cram-code/cram_core/issues/29#issuecomment-73501138","issue_url":"https://api.github.com/repos/cram-code/cram_core/issues/29","id":73501138,"user":{"login":"airballking","id":1560050,"avatar_url":"https://avatars.githubusercontent.com/u/1560050?v=3","gravatar_id":"","url":"https://api.github.com/users/airballking","html_url":"https://github.com/airballking","followers_url":"https://api.github.com/users/airballking/followers","following_url":"https://api.github.com/users/airballking/following{/other_user}","gists_url":"https://api.github.com/users/airballking/gists{/gist_id}","starred_url":"https://api.github.com/users/airballking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/airballking/subscriptions","organizations_url":"https://api.github.com/users/airballking/orgs","repos_url":"https://api.github.com/users/airballking/repos","events_url":"https://api.github.com/users/airballking/events{/privacy}","received_events_url":"https://api.github.com/users/airballking/received_events","type":"User","site_admin":false},"created_at":"2015-02-09T12:32:09Z","updated_at":"2015-02-09T12:32:09Z","body":"My original intention was to improve our implementation of designators by internally using standard data-structures. I think we should not maintain code to access/manipulate collections of key-value pairs when there is such code available in Common LISP or Alexandria.\r\n\r\nThat being said, I think having  designator descriptions (through setter and and getter functions) appear like such a datastructure to users would already be an improvement.\r\n\r\nAs for conveniently creating designators in code, I personally would prefer such an interface (omitting the type for clarity):\r\n```lisp\r\n(with-designators ((desig (:key1 value1 :key2 value2 :key3 value3))))\r\n```"}}