Как мне реализовать F # Read Eval Print Loop (REPL)? - PullRequest
7 голосов
/ 15 февраля 2011

Я хотел бы добавить F # REPL в свое приложение для оперативной отладки.Я смотрю на исходный код fsi.exe (F # Interactive), и происходит множество вещей, которые выглядят так, как будто они работают с внутренними компонентами компилятора F #.Из-за этого я не могу заставить этот же код компилироваться в контексте нашего приложения.

Есть ли хороший простой пример реализации F # REPL где-нибудь?Я бы надеялся, что это будет довольно легко.

Ответы [ 2 ]

5 голосов
/ 15 февраля 2011

Короткий ответ: F # (к сожалению) в настоящее время не предоставляет API для размещения F # Interactive в ваших приложениях. Многие люди просят об этом - см., Например, ТАК вопрос .

Существуют две вещи, которые вы можете сделать с этим:

  • Вы можете изменить релиз с открытым исходным кодом и скомпилировать fsi.exe в виде некоторой библиотеки DLL, которая предоставит вам необходимый API. Это непростая задача - F # Interactive тесно связан с компилятором (он компилирует код, который вы вводите на лету), но это должно быть выполнимо для инкапсуляции типов, реализующих REPL, в некоторый тип, который вы можете вызвать (но вы не можете просто взять некоторые файл из него - вам нужно скомпилировать весь F #, чтобы это работало).

  • Вы можете запустить fsi.exe как отдельный процесс, как это делает Visual Studio, и отправлять ему команды, используя стандартный ввод / вывод. Вы можете добиться большей гибкости, загружая свою библиотеку при запуске fsi.exe. Библиотека может использовать .NET Remoting для подключения к вашему приложению и предоставления некоторых данных.

К сожалению, эти два варианта, вероятно, единственные вещи, которые вы можете сделать в данный момент.

РЕДАКТИРОВАТЬ Я думал, что уже где-то ответил на этот вопрос (возможно, по электронной почте), но не смог
Найди это! Спасибо Маурисио, который нашел точную копию (даже с моим повторным ответом ... Дох!)

1 голос
/ 03 января 2014

Я написал серию постов в блоге об использовании интерактивного исполняемого файла с открытым исходным кодом F # и приложения WPF.

База кодов доступна на github - https://github.com/oriches/Simple.Wpf.FSharp.Repl

Серия сообщений в блоге:

http://awkwardcoder.blogspot.co.uk/2013/12/simple-f-repl-in-wpf-part-1.html

http://awkwardcoder.blogspot.co.uk/2013/12/simple-f-repl-in-wpf-part-2.html

http://awkwardcoder.blogspot.co.uk/2013/12/simple-f-repl-in-wpf-part-3.html

Последний пост будет опубликован в ближайшее время.

...