{"action":"opened","issue":{"url":"https://api.github.com/repos/septract/starling-tool/issues/44","repository_url":"https://api.github.com/repos/septract/starling-tool","labels_url":"https://api.github.com/repos/septract/starling-tool/issues/44/labels{/name}","comments_url":"https://api.github.com/repos/septract/starling-tool/issues/44/comments","events_url":"https://api.github.com/repos/septract/starling-tool/issues/44/events","html_url":"https://github.com/septract/starling-tool/issues/44","id":155938516,"number":44,"title":"Unknown unoptimisable views?","user":{"login":"CaptainHayashi","id":374963,"avatar_url":"https://avatars.githubusercontent.com/u/374963?v=3","gravatar_id":"","url":"https://api.github.com/users/CaptainHayashi","html_url":"https://github.com/CaptainHayashi","followers_url":"https://api.github.com/users/CaptainHayashi/followers","following_url":"https://api.github.com/users/CaptainHayashi/following{/other_user}","gists_url":"https://api.github.com/users/CaptainHayashi/gists{/gist_id}","starred_url":"https://api.github.com/users/CaptainHayashi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CaptainHayashi/subscriptions","organizations_url":"https://api.github.com/users/CaptainHayashi/orgs","repos_url":"https://api.github.com/users/CaptainHayashi/repos","events_url":"https://api.github.com/users/CaptainHayashi/events{/privacy}","received_events_url":"https://api.github.com/users/CaptainHayashi/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/septract/starling-tool/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/septract/starling-tool/labels/noncritical","name":"noncritical","color":"f7c6c7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-05-20T11:01:14Z","updated_at":"2016-05-20T11:01:14Z","closed_at":null,"body":"Currently\r\n\r\n`{?}`\r\n\r\nexpands to\r\n\r\n`{freshname(locals)?}`\r\n\r\nwhere `?` means the view can be optimised away.\r\n\r\nIt might be helpful to have some syntax expanding to\r\n\r\n`{freshname(locals)}`\r\n\r\nwhere the view is unknown, but _cannot_ be optimised away.  This is basically the user saying 'this is a point where observations can be made about the shared state, so I want to prove axiom soundness here, but I don't care what _my_ view is', and might be useful in cases where we know two commands in sequence are _not_ atomic but we don't care about the intermediate state.\r\n\r\nIn accordance with what I said in #41 it might be worth coming up with some new syntax for unknown views or advisory views (I hate that name :P) to avoid ambiguity with `?`.  Maybe something fairly orthogonal like\r\n\r\n```\r\n{| foo(bar) |}   // non-optimisable view\r\n{| ~foo(bar) |}  // optimisable view (should we just call them that, then?)\r\n{| foo? |}       // unknown named non-optimisable view, desugars to {| foo(locals...) |}\r\n{| ~foo? |}      // unknown named optimisable view, desugars to {| ~foo(locals...) |}\r\n{| ? |}          // unknown anonymous non-optimisable view, desugars to {| freshname? |}\r\n{| ~? |}         // unknown anonymous optimisable view, desugars to {| ~freshname? |}\r\n```"}}
{"actor":{"display_login":"CaptainHayashi"}}