Причина, по которой я прошу, состоит в том, что я изучаю F # и хочу участвовать в соревнованиях TopCoder. Однако F # не входит в список поддерживаемых там языков. Но C# находится в списке (честно говоря, это касается почти всех онлайн-соревнований по кодированию, кроме Google Code Jam и Facebook Hacker cup).Можно ли преобразовать код F # в код C#?
Возможные обходные пути я могу думать на данный момент являются 1) найти переводчика, который может переводить F # исходный код непосредственно в C# 2) скомпилировать F # код в .net исполняемым, а затем разобрать его обратно в C код
#Минимальное требование состоит в том, что сгенерированный C# должен быть способен скомпилировать в исполняемый исполняемый файл .net, предпочтительнее как можно меньше внешней зависимости.
Первый подход кажется маловероятным, быстрый поиск в Google не имеет ничего общего. Подход двух выглядит более перспективным, существуют .net дизассемблеры существуют.
Я пробовал самый популярный --- Отражатель из Красных ворот. Хотя он отлично умеет сглаживать исполняемые файлы C#, он, похоже, имеет проблемы с исполняемыми файлами, скомпилированными из F #: он с радостью разобран, но полученный C# -код имеет некоторые специальные символы, такие как добавление ведущего знака $ к имени класса и другим странным материалам, поэтому он не может быть скомпилирован. Я использовал Visual Studio 2010 Professional, последнюю версию бета-версии Reflector (которая бесплатна).
Я ничего не теряю здесь? Является ли это возможным?
Обновление: Похоже, что это все еще невозможно. Пока я использую C#.
Даже если бы это было возможно, источник вывода был бы удобно смотреть ... не слишком хорошо. Не говоря уже о том, является ли он идиоматичным. Автоматическое преобразование из L1 в L2 с хорошо читаемыми результатами * очень сильно. – delnan
Если честно, читаемость кода здесь не является для меня проблемой. Если вы посмотрите на код TopCoders в C/C++, в основном это делается с использованием массивов с индексами, такими как i, j, k. – Cygwin98
TopCoder должен присоединиться к 21-му веку. –