LINUX.ORG.RU

[F#] Runtime compile


0

1

Как:

  • загружать в рантайме F# сорцы, при чём чтобы были доступны модули и ссылки, которые доступны из главного приложения, внутри этих фалов.
  • если в этих файлах объявлён один и тот же модуль и в нём есть одинаковые привязки, можно ли их использовать единовременно? Если нет - не беда, можно раскидывать их по другим «местам» инкрементно с загрузкой файлов.
  • после того, как всё загружено, сделать дамп в запускаемый файл(конкретнее - перезаписать себя).
  • перезагрузить эти файлы, после того как они уже загружены. Т.е. возможно переопределить типы, если их объявления есть в загружаемых в рантайме сорцах?

или я слишком много прошу от F#?

Для тех, кто знает лисп, прошу, видимо, аналога compile-file в рантайме.

Ответ на: комментарий от encyrtid

Roslyn exposes modules for syntactic (lexical) analysis of code, semantic analysis, dynamic compilation to CIL, and code emission.

да это полноценный компилятор я смотрю...

Еще есть такая штука.

ни разу не видел там реализации темы топика

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от encyrtid

ок, проверить возможности пока нет.

Если использовать этот код из рантайма, то возможно многие типы(в аргументах) прийдётся указывать руками? Это очень плохо в моей задаче. Также не понятно что делать с

при чём чтобы были доступны модули и ссылки, которые доступны из главного приложения, внутри этих файлов.

здесь пример, может кому нибудь пригодится.

pseudo-cat ★★★
() автор топика

Enjoy your .Ne

Я как-то в Java мучался с тем, чтобы загрузить на ходу jar-файл, был очень удивлен, что по дефолту нет простой возможности сделать это.

buddhist ★★★★★
()
Ответ на: комментарий от buddhist

вот кстати хороший способ сравнивать имплементации ЯП, вот в моём любимом лиспеке это элементарно делать, а всё динамическая типиизация и не только

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

Ага, мне как раз надо было сделать это в рамках Kawa — реализации Scheme на jvm.

buddhist ★★★★★
()

Не знаю, подойдет это тебе или нет, но квазицитаты можно вычислять и компилировать на лету через LINQ (PowerPack) [стр. 323, Programming F#].

dave ★★★★★
()
Ответ на: комментарий от encyrtid

напиши

  • что нужно сделать для загрузки сборки
  • как компилить сорцы в рантайме
  • как обращаться к классам/объектам/методам из загруженных сборок
  • как идентифицировать объекты/классы из «одинаковых» загруженных сборок

и я скажу что мне не нравится)

я такими вещами не занимаюсь, но чел с работы постоянно матерится на .Net в этом плане. Особенно жалуется на плагинизацию. Если сомневаешся в его авторитете - он фанатик .Net, целыми днями изучает

pseudo-cat ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.