{"action":"created","issue":{"url":"https://api.github.com/repos/ocsigen/tyxml/issues/76","labels_url":"https://api.github.com/repos/ocsigen/tyxml/issues/76/labels{/name}","comments_url":"https://api.github.com/repos/ocsigen/tyxml/issues/76/comments","events_url":"https://api.github.com/repos/ocsigen/tyxml/issues/76/events","html_url":"https://github.com/ocsigen/tyxml/pull/76","id":98773985,"number":76,"title":"Functorial interface updated to support shared reactive Eliom","user":{"login":"vasilisp","id":4950946,"avatar_url":"https://avatars.githubusercontent.com/u/4950946?v=3","gravatar_id":"","url":"https://api.github.com/users/vasilisp","html_url":"https://github.com/vasilisp","followers_url":"https://api.github.com/users/vasilisp/followers","following_url":"https://api.github.com/users/vasilisp/following{/other_user}","gists_url":"https://api.github.com/users/vasilisp/gists{/gist_id}","starred_url":"https://api.github.com/users/vasilisp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vasilisp/subscriptions","organizations_url":"https://api.github.com/users/vasilisp/orgs","repos_url":"https://api.github.com/users/vasilisp/repos","events_url":"https://api.github.com/users/vasilisp/events{/privacy}","received_events_url":"https://api.github.com/users/vasilisp/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-08-03T15:53:09Z","updated_at":"2015-08-04T11:13:11Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ocsigen/tyxml/pulls/76","html_url":"https://github.com/ocsigen/tyxml/pull/76","diff_url":"https://github.com/ocsigen/tyxml/pull/76.diff","patch_url":"https://github.com/ocsigen/tyxml/pull/76.patch"},"body":"The `sharedreactcontent` branch provides the changes that we need in order to implement an `R` module for Eliom shared values.\r\n\r\nThe main points are:\r\n\r\n* `Xml_wrap.T'` adds a type constructor `ft` to `Xml_wrap.T`. This is in order to accommodate\r\n  shared functions for operating on shared values.\r\n* A signature `Conv` contains instances of `ft` for all operations on wrapped elements that the\r\n  functor performs. This is needed because we cannot simply inject server-side functions.\r\n* Our use of shadow types becomes \"customizable\". The functor receives types `u` and `'a s` related\r\n  by operations `shadow : u -> 'a s` and `unshadow : 'a s -> u` . `'a s` becomes the type of the resulting\r\n  HTML elements. This is in order to achieve type equalities between different functor invocations (in\r\n  Eliom) that would be hard to achieve otherwise.\r\n\r\nThe corresponding Eliom branch is also called `sharedreactcontent`.\r\n\r\nConcerns? Suggestions? I know that the implementation is rough and incomplete, e.g., there is no SVG support yet. Hopefully an early pull request is a good format for discussion on this."},"comment":{"url":"https://api.github.com/repos/ocsigen/tyxml/issues/comments/127567634","html_url":"https://github.com/ocsigen/tyxml/pull/76#issuecomment-127567634","issue_url":"https://api.github.com/repos/ocsigen/tyxml/issues/76","id":127567634,"user":{"login":"Drup","id":801124,"avatar_url":"https://avatars.githubusercontent.com/u/801124?v=3","gravatar_id":"","url":"https://api.github.com/users/Drup","html_url":"https://github.com/Drup","followers_url":"https://api.github.com/users/Drup/followers","following_url":"https://api.github.com/users/Drup/following{/other_user}","gists_url":"https://api.github.com/users/Drup/gists{/gist_id}","starred_url":"https://api.github.com/users/Drup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Drup/subscriptions","organizations_url":"https://api.github.com/users/Drup/orgs","repos_url":"https://api.github.com/users/Drup/repos","events_url":"https://api.github.com/users/Drup/events{/privacy}","received_events_url":"https://api.github.com/users/Drup/received_events","type":"User","site_admin":false},"created_at":"2015-08-04T11:13:11Z","updated_at":"2015-08-04T11:13:11Z","body":"If it's equivalent to `tot/toelt`, why do you need it ?"}}