{"action":"created","issue":{"url":"https://api.github.com/repos/nim-lang/Nim/issues/3255","labels_url":"https://api.github.com/repos/nim-lang/Nim/issues/3255/labels{/name}","comments_url":"https://api.github.com/repos/nim-lang/Nim/issues/3255/comments","events_url":"https://api.github.com/repos/nim-lang/Nim/issues/3255/events","html_url":"https://github.com/nim-lang/Nim/issues/3255","id":103190000,"number":3255,"title":"Enforce Accessibility through Refinement Types in Similar Scheme to Effects and Tags with Ability to Define Shorthands","user":{"login":"sirinath","id":637415,"avatar_url":"https://avatars.githubusercontent.com/u/637415?v=3","gravatar_id":"","url":"https://api.github.com/users/sirinath","html_url":"https://github.com/sirinath","followers_url":"https://api.github.com/users/sirinath/followers","following_url":"https://api.github.com/users/sirinath/following{/other_user}","gists_url":"https://api.github.com/users/sirinath/gists{/gist_id}","starred_url":"https://api.github.com/users/sirinath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sirinath/subscriptions","organizations_url":"https://api.github.com/users/sirinath/orgs","repos_url":"https://api.github.com/users/sirinath/repos","events_url":"https://api.github.com/users/sirinath/events{/privacy}","received_events_url":"https://api.github.com/users/sirinath/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-08-26T06:47:02Z","updated_at":"2015-09-05T08:38:12Z","closed_at":null,"body":"The current way to define accessibility is through defining a type inheritable and using * to denote visibility. Visibility can also be part of the type extension mechanism as tags and  effects are type extensions. This will make more fine grain visibility constraints.\r\n\r\nAlso to maintain current compatibility you can define operators like * to alias (definable short hand) these refinements. Don't bake them into the language but define them in the standard library.\r\n\r\nRef: https://www.fstar-lang.org/, https://en.wikipedia.org/wiki/ACL2, https://en.wikipedia.org/wiki/ATS_(programming_language), http://x10-lang.org/"},"comment":{"url":"https://api.github.com/repos/nim-lang/Nim/issues/comments/137929115","html_url":"https://github.com/nim-lang/Nim/issues/3255#issuecomment-137929115","issue_url":"https://api.github.com/repos/nim-lang/Nim/issues/3255","id":137929115,"user":{"login":"Araq","id":287816,"avatar_url":"https://avatars.githubusercontent.com/u/287816?v=3","gravatar_id":"","url":"https://api.github.com/users/Araq","html_url":"https://github.com/Araq","followers_url":"https://api.github.com/users/Araq/followers","following_url":"https://api.github.com/users/Araq/following{/other_user}","gists_url":"https://api.github.com/users/Araq/gists{/gist_id}","starred_url":"https://api.github.com/users/Araq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Araq/subscriptions","organizations_url":"https://api.github.com/users/Araq/orgs","repos_url":"https://api.github.com/users/Araq/repos","events_url":"https://api.github.com/users/Araq/events{/privacy}","received_events_url":"https://api.github.com/users/Araq/received_events","type":"User","site_admin":false},"created_at":"2015-09-05T08:38:12Z","updated_at":"2015-09-05T08:38:12Z","body":"> *But why have it at all baked into the language when you can have it through meta programming and effects system.*\r\n\r\nBecause we like to spend our complexity budget on other, much more important things."}}