{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/3607","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/3607/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/3607/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/3607/events","html_url":"https://github.com/dotnet/roslyn/issues/3607","id":89779897,"number":3607,"title":"Announcment: MutableRoslyn","user":{"login":"YaakovDavis","id":965750,"avatar_url":"https://avatars.githubusercontent.com/u/965750?v=3","gravatar_id":"","url":"https://api.github.com/users/YaakovDavis","html_url":"https://github.com/YaakovDavis","followers_url":"https://api.github.com/users/YaakovDavis/followers","following_url":"https://api.github.com/users/YaakovDavis/following{/other_user}","gists_url":"https://api.github.com/users/YaakovDavis/gists{/gist_id}","starred_url":"https://api.github.com/users/YaakovDavis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YaakovDavis/subscriptions","organizations_url":"https://api.github.com/users/YaakovDavis/orgs","repos_url":"https://api.github.com/users/YaakovDavis/repos","events_url":"https://api.github.com/users/YaakovDavis/events{/privacy}","received_events_url":"https://api.github.com/users/YaakovDavis/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Discussion","name":"Discussion","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-06-20T15:07:50Z","updated_at":"2015-06-23T07:19:55Z","closed_at":null,"body":"I've released the 1st version of MutableRoslyn; a library for easy mutation of Roslyn syntax trees:\r\nhttps://github.com/YaakovDavis/MutableRoslyn\r\n\r\nThe mutable classes are auto-generated from the same XML that's used to generate Roslyn's red nodes, those reducing the risk for implementation errors.\r\n\r\nThe lib supports Immutable <-> mutable conversion.\r\n\r\nA typical workflow would be:\r\n1. Convert to mutable\r\n2. Modify\r\n3. Convert back to immutable.\r\n\r\nThe lib doesn't preserve (unstructured) trivia."},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/114388349","html_url":"https://github.com/dotnet/roslyn/issues/3607#issuecomment-114388349","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/3607","id":114388349,"user":{"login":"YaakovDavis","id":965750,"avatar_url":"https://avatars.githubusercontent.com/u/965750?v=3","gravatar_id":"","url":"https://api.github.com/users/YaakovDavis","html_url":"https://github.com/YaakovDavis","followers_url":"https://api.github.com/users/YaakovDavis/followers","following_url":"https://api.github.com/users/YaakovDavis/following{/other_user}","gists_url":"https://api.github.com/users/YaakovDavis/gists{/gist_id}","starred_url":"https://api.github.com/users/YaakovDavis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YaakovDavis/subscriptions","organizations_url":"https://api.github.com/users/YaakovDavis/orgs","repos_url":"https://api.github.com/users/YaakovDavis/repos","events_url":"https://api.github.com/users/YaakovDavis/events{/privacy}","received_events_url":"https://api.github.com/users/YaakovDavis/received_events","type":"User","site_admin":false},"created_at":"2015-06-23T07:19:55Z","updated_at":"2015-06-23T07:19:55Z","body":"First, it supports conversion from, and to, Roslyn, so it can be used\nanywhere Roslyn is used.\n\nI use it for code-generation and transformation purposes; I have an\nabstract code that I transform to a concrete implementation by AST mutation.\n\nI can see it useful for similar scenarios.\n\nThink meta-programming.\nOn Jun 23, 2015 10:14 AM, \"Andy Gocke\" <notifications@github.com> wrote:\n\n> @YaakovDavis <https://github.com/YaakovDavis> So, first, almost all\n> functional programming languages use immutable trees as their natural data\n> structure because they're highly amenable to functional manipulation, so\n> immutability is often a natural fit for trees.\n>\n> But second, you can't use this in most of the places people use roslyn\n> today -- like in VS or analyzers. So what's the use case?\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/dotnet/roslyn/issues/3607#issuecomment-114387583>.\n>\n"}}