I suggest you ...

Provide refactoring support for F# code.

Currently F# IDE integration into visual studio does not have any refactoring support. It would be nice to at the very least be able to handle renaming.

1,577 votes
Vote
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    I agree to the terms of service
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    David Taylor-FullerDavid Taylor-Fuller shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

    17 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      Submitting...
      • Anonymous commented  ·   ·  Flag as inappropriate

        Je ai commencé avec une de mes zara parfum homme préférées, ma nouvelle collection femme zara de katia zara (raccord, comme zara était un manteau zara homme commanditaire de l'événement Tony). Alessandra est clairement la meilleure égérie pour sa ligne.best liste habillé, bien sûr. Michelle Dockery était déjà primé scène et actrice de télévision au Royaume-Uni Quand elle a eu de la part de Lady Mary Crawley dans Downton Abbey. Je dois dire, il était certainement l'une des meilleures façons de commencer une matinée surtout sur une journée de travail. Cdv: à la fin, nous avons voulu assurer que la collection cible regardé visuellement différent de notre ligne principale, tout en capturant l'essence de Peter Pilotto.

        http://www.zara-paris.com/soldes-zara.html
        Félicitations, Lupita nyongo. Avec cachés vetement bébé garçon zara et une féminine, ce regard vous emmènera directement à partir au travail le matin à une fête le soir. Pour un cadre plus décontracté, essayez un appariement monochrome d'un top à bottine femme zara taille haute, comme Cates Stella McCartney monochrome tenue. Et toujours un maillot de bain, juste au cas où. Voilà comment vous faites tapis rouge usure de maternité, les gens. Et, bien sûr, les accessoires sont toujours important, donc je appelés dans certains charmes de bras graves mes bons amis, la chanteuse seth Kessel et le modèle Eduardo Ramos.

        Je vois Londres, je vois france. Mais, désolé, pas de tiare de mariage si quelqu'un est probablement loue en ce moment. Elle serait faire travailler pour le bureau par le jumelage avec un midiskirt pois et bandage zara collection femme. Lupita juste nous a séduit dans ce vert christian zara pantalon femme brillante de haute couture à cette cérémonie BAFTA années, mais il y a un an, elle a cloué la chose la déesse grecque dans une station de Lanvin bloqué 2,014 robe chez zara 2016. Et, bien sûr, tous les uniformes comprennent Columbias technologie réfléchissant la chaleur omni, pour plus de chaleur avec moins glamour vrac: pouvez-vous nous décrire un peu de besoins différents pour les athlètes de différents dc de sport: quand il vient à bosses, bosses skieurs font face à la tâche peu enviable de devoir, pour apparaître complètement calme et lisse comme ils matraqué par les montagnes terrains les plus difficiles. Hahns Actrice de Kathryn zara soldes en ligne simple, réduire le cou, blazer homme zaraons lbd lors de la projection de SXSW de mauvais mots est quelque chose que nous pouvons tout à fait imaginer d'ajouter à nos propres placards il est un tel, pièce élégante polyvalent.

        vetement fille zara

      • Edward BreyEdward Brey commented  ·   ·  Flag as inappropriate

        Donna, would constrained rename refactoring bring the effort down the manageable? C# refactoring is very forgiving: even if the product doesn't build, you can still use rename and be confident it will do a good job.

        But what if you only supported rename refactoring, and only on a solution that builds cleanly? Then the type inference and higher order function complications should go away. The compiler already knows how to identify the statically-typed meaning of each symbol; so as long as enough of Roslyn spills over to F# to bring what the compiler knows into the IDE, replacing the text on the list of symbol locations should be straightforward.

        Even if that's all we got - rename for clean solutions - that would be a game changer for using F# on larger projects.

      • LiviuLiviu commented  ·   ·  Flag as inappropriate

        Find usages (references ) in F# does not work. How to manage a large solution? Just search for text?

      • Mark SeemannMark Seemann commented  ·   ·  Flag as inappropriate

        Dear F# product team. This suggestion was reported more than two years ago, and has seen no activity since then.

        Currently, it's taking up people's votes. Could you please either accept or decline it, so that we can all move along?

      • AnonymousAnonymous commented  ·   ·  Flag as inappropriate

        Visual F# should at the very least support basic editor features found in Visual C# such as Semantic Color Highlighting and Automatic XML Comments (type "///" in front of a function and all the appropriate XML tags appear). The absence of these helpers is a tremendous obstacle for its adoption.

      • paulblairpaulblair commented  ·   ·  Flag as inappropriate

        Rename, introduce variable, extract function -- if I had just these three I'd be happy. In my experience, I do these a lot.

      • Donna Malayeri (MSFT)Donna Malayeri (MSFT) commented  ·   ·  Flag as inappropriate

        This would indeed be a nice feature, and we are considering it for a future release.

        However, please note that refactoring in F# (and similar languages) is a much harder problem than in OO languages, since it involves type inference and accounting for heavy use of higher order functions. Refactoring in Scala is also hard to implement (e.g., see http://devnet.jetbrains.net/message/5304630#5304630), and even "rename" in Java has problems! (http://dl.acm.org/citation.cfm?doid=1449955.1449787).

        This is not to say it cannot be done for F#, but it is definitely a tricky problem.

        Donna Malayeri - MSFT
        Visual Studio F# Program Manager

      • igetaigeta commented  ·   ·  Flag as inappropriate

        Whether FP or OOP, it's really important to keep readable code.

      • AnonymousAnonymous commented  ·   ·  Flag as inappropriate

        Refactorings are not that common in FP practice, mostly because functional composition depends more on type signature than name. So I don't think refactoring features are of top priority.

      • mattias waldaumattias waldau commented  ·   ·  Flag as inappropriate

        If you compare F# with Scala inside Intellij, there is a huge difference, Scala handles this much better.

      Feedback and Knowledge Base