Помогите встраивание FSI - PullRequest
       31

Помогите встраивание FSI

0 голосов
/ 04 апреля 2011

Начиная здесь - Встраивание F # интерактивного - Я пытался встроить FSI в свое приложение.

Однако я получаю странные вещи от StandardOutput.

например, в стандартном FSI, если я отправлю это:

let a = 3;;

Я получаю это обратно:

[empty line here]
val a : int = 3
[empty line here]
> |

(с Pipe, представляющим входную позицию)

Но если я отправлю let a = 3;; в StandardInput, я получу это обратно на StandardOutput:

> 
val a : int = 3
|

Кто-нибудь еще пробовал это? Есть ли что-то, что я делаю не так, и если нет, то есть ли способ обойти это? Ничто из того, что я пробовал до сих пор, не работает, и прежде чем я попробую «худшее», о чем я могу подумать (установить таймер после отправки материала, добавить> себя на время ожидания), я хотел бы знать, есть ли лучший способ!

1 Ответ

3 голосов
/ 04 апреля 2011

При внедрении F # Interactive Visual Studio использует параметр --fsi-server:<some value>. Насколько я знаю, это делает две вещи:

  • Изменяет способ печати вывода (вместо печати > он печатает SERVER-PROMPT> в отдельной строке, поэтому должно быть проще удалить его из вывода и определить состояние, когда ожидается ввод))

  • Он также запускает некоторый канал .NET Remoting, который можно использовать для остановки выполнения команд в F # Interactive (например, если он попадает в бесконечный цикл), и он также может предоставить некоторую информацию о завершении.

Интерактивная панель F # в плагине MonoDevelop F # использует флаг ( см. Исходный код на GitHub ). Я думаю, что это работает в основном правильно, но я считаю, что иногда выводит дополнительные \n в выводе.

...