Using the Fsharp.Compiler.Serice Interactive API I'd like to set variables to my FsiEvaluationSession object. Is this possible? Or is there another way to embed f# into an application for embedded-scripting purposes?
I don't think there is a direct way to do this, but there is a lovely workaround:
// Define a mutable variable with default value
fsiSession.EvalInteraction "let mutable myVar = Unchecked.defaultof<int>"
// Create a function that sets the value of the variable
let f = evalExpressionTyped<int -> unit> "fun x -> myVar <- x"
// Run the function to set the value of `myVar` to whatever we want
f 42
// As a bonus, use variable shadowing to make it immutable
fsiSession.EvalInteraction "let myVar = myVar"
This uses the evalExpressionTyped
helper from the FCS documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With