{"action":"created","issue":{"url":"https://api.github.com/repos/WebAssembly/design/issues/445","labels_url":"https://api.github.com/repos/WebAssembly/design/issues/445/labels{/name}","comments_url":"https://api.github.com/repos/WebAssembly/design/issues/445/comments","events_url":"https://api.github.com/repos/WebAssembly/design/issues/445/events","html_url":"https://github.com/WebAssembly/design/issues/445","id":114881617,"number":445,"title":"Break / Branch?","user":{"login":"kripken","id":173661,"avatar_url":"https://avatars.githubusercontent.com/u/173661?v=3","gravatar_id":"","url":"https://api.github.com/users/kripken","html_url":"https://github.com/kripken","followers_url":"https://api.github.com/users/kripken/followers","following_url":"https://api.github.com/users/kripken/following{/other_user}","gists_url":"https://api.github.com/users/kripken/gists{/gist_id}","starred_url":"https://api.github.com/users/kripken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kripken/subscriptions","organizations_url":"https://api.github.com/users/kripken/orgs","repos_url":"https://api.github.com/users/kripken/repos","events_url":"https://api.github.com/users/kripken/events{/privacy}","received_events_url":"https://api.github.com/users/kripken/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-11-03T18:38:19Z","updated_at":"2015-11-03T20:01:04Z","closed_at":null,"body":"This repo currently has `br: branch to a given label in an enclosing construct`. I assume the intention is that\r\n\r\n````\r\n(block $block\r\n  (branch $block) // goes to $more\r\n)\r\n(block $more)\r\n)\r\n````\r\n\r\nIs my understanding correct?\r\n\r\nIf so, isn't this more of a \"break\" than a \"branch\"? We not are not actually branching to `$block`, we are going to `$more` in fact. But the name \"branch\" implies to me \"branch **to**\". It seems nicer to do either\r\n\r\n1. `(branch $more)`, which says \"branch to `$more`\" (where we actually branch to), or\r\n2. `(break $block)`, which says \"break on `$block`\" (just like a C/JS/etc. break on a labeled block),\r\n\r\nover the current state, which says `(branch $block)` but actually does not branch to `$block`.\r\n\r\nObviously 1 is a forward goto, which is bad. How about 2?\r\n"},"comment":{"url":"https://api.github.com/repos/WebAssembly/design/issues/comments/153470920","html_url":"https://github.com/WebAssembly/design/issues/445#issuecomment-153470920","issue_url":"https://api.github.com/repos/WebAssembly/design/issues/445","id":153470920,"user":{"login":"sunfishcode","id":4503403,"avatar_url":"https://avatars.githubusercontent.com/u/4503403?v=3","gravatar_id":"","url":"https://api.github.com/users/sunfishcode","html_url":"https://github.com/sunfishcode","followers_url":"https://api.github.com/users/sunfishcode/followers","following_url":"https://api.github.com/users/sunfishcode/following{/other_user}","gists_url":"https://api.github.com/users/sunfishcode/gists{/gist_id}","starred_url":"https://api.github.com/users/sunfishcode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sunfishcode/subscriptions","organizations_url":"https://api.github.com/users/sunfishcode/orgs","repos_url":"https://api.github.com/users/sunfishcode/repos","events_url":"https://api.github.com/users/sunfishcode/events{/privacy}","received_events_url":"https://api.github.com/users/sunfishcode/received_events","type":"User","site_admin":false},"created_at":"2015-11-03T20:01:04Z","updated_at":"2015-11-03T20:01:04Z","body":"Another approach is to rearrange the syntax. Instead of putting the label at the top of a block, we could put it at the bottom:\r\n\r\n```\r\n(block\r\n  (blah)\r\n  (blah)\r\n  (blah)\r\n  $label\r\n)\r\n```\r\n\r\nwhich makes it quite clear where control goes on a branch with that label."}}