Hi Mike,

How does Reflector fare on F# code? I don't use it much myself. It might be better to improve reflector than reinvent the wheel?

Thanks!

don

By on 3/14/2007 1:25 PM ()

I've just discovered Lutz Roeder's Reflector myself. Wow, what a great tool!

Not only is Reflector an extremely convenient and efficient (documentation) browser for the .NET framework class library, it also "disassembles" F#-generated assemblies into C# and thus can be used to get an understanding of how F# data structures and language constructs are mapped to the traditional .NET language correspondents.

A link to this tool in the "F# from C#" section of the F# manual would definitely be helpful.

By on 9/23/2007 7:03 AM ()

Reflector does okay on F# okay, but it does come out looking a little strange and occasionally decompilation crash when looking at F# assemblies, though this does seem to improve with every release.

Reflector supports add-in that allow you to decompile to other languages. optionsScalper started working on one: [link:cs.hubfs.net] but no work seems to have been done on it for a while.

Cheers,
Rob

By on 3/14/2007 2:43 PM ()

Thanks Robert.

Good to see that something has been started though disappointing to see it not carried through.

(Hi Don. This builds on Reflector, and doesn't re-invent it. Haven't given it extensive tests with F# assemblies, and certainly not with the recent, somewhat revised, release.)

In the long term as F# catches on I hope that this idea receives more attention. (Looks like it would not only benefit those interested in F# but might also help Reflector.)

By on 3/26/2007 4:14 PM ()

Mike,

There were two issues why the reflector addin for F# had no follow through. The first was resources and time, i.e. I and one or two other people expressed interest in creating the addin. But the reality is that the undertaking is a little more involved than I realized (which leads into point 2). The second was that the IL that is emitted by F# is significantly different than C#, VB.NET and other imperative style .NET languages. In particular, there are a lot of closures that have to be "unwound".

As a person not formally trained in compiler theory, lex/parse work and other similar disciplines, I realized that I did not have the talent to move this forward.

I think that this project should continue. I'd be willing to host resources for code, forums, blogs, etc. I can only contribute on the periphery with respect to code, project management, etc.

As a side note, I did have a few interactions with Lutz Roeder and he was kind enough to provide some of the original internal code for Reflector. I have the code "under lock and key" as he asked, but it provides for the basic engine used by Reflector. In connection with point #2 above, I'm not convinced that Reflector could deal with some of the F# language elements. It likely would require changes to Reflector's core engine. Now that F# has been approved for productization, I would imagine that Lutz may be willing to participate to make that happen.

---O

By on 11/7/2007 4:23 PM ()

I started an F# reflector add-in as well but I don't know when it will bear any fruit. Time is indeed the issue here. It will take a great deal of time and research to create a good decompilation add-in.

By on 11/9/2007 1:09 PM ()
IntelliFactory Offices Copyright (c) 2011-2012 IntelliFactory. All rights reserved.
Home | Products | Consulting | Trainings | Blogs | Jobs | Contact Us | Terms of Use | Privacy Policy | Cookie Policy
Built with WebSharper