标签: f#-compiler-services

F#编译器服务错误地解析程序

更新:

我现在意识到这个问题很愚蠢,我本应该提出这个问题.事后来看,我不明白为什么我甚至都会问这个问题.
问题出在这里:https://github.com/fsharp/FSharp.Compiler.Service/issues/544


原始问题:

我正在使用FSharp编译器服务来解析一些F#代码.
我现在面对的特定代码是:

  let f x y = x+y
  let g = f 1
  let h = (g 2) + 3
Run Code Online (Sandbox Code Playgroud)

该程序(+)在最后一行没有调用的情况下产生TAST .也就是说,编译器服务返回TAST,就像最后一行一样let h = g 2.

问题是:这是一个我应该报告的合法错误,还是我错过了什么?


一些笔记

  1. 这是一个包含最小repro 的repo(我不想在这个问题中包含它,因为Compiler Services需要相当多的跳舞).
  2. let h在行之后添加更多语句不会改变结果.
  3. 当编译为IL(而不是使用编译器服务解析)时,它似乎按预期工作(例如,见小提琴)
  4. 如果我创建g一个值,程序会正确解析.
  5. 如果我创建g一个正常的函数(而不是部分应用),程序会正确解析.

f# f#-compiler-services

9
推荐指数
1
解决办法
215
查看次数

如何在asp.net Web应用程序中安全地嵌入F#编译器

我正在开发一个asp.net Web应用程序,使用户能够提交F#代码,这些代码应该在服务器上动态编译和执行.我正在考虑使用此处显示的方法在Web应用程序中托管F#编译器: https ://fsharp.github.io/FSharp.Compiler.Service/compiler.html 或使用F#interactive:http://fsharp.github .IO/FSharp.Compiler.Service/interactive.html

我们的想法是动态编译F#代码,然后将其作为c#中的程序集加载,或让F#交互式解释代码.但是,我主要担心的是安全性以及如何阻止最终用户执行任意代码.是否有一种简单的方法来限制它?谢谢!

f# f#-interactive f#-compiler-services

7
推荐指数
1
解决办法
343
查看次数

FSharp 嵌入式 API 添加变量

使用Fsharp.Compiler.Serice Interactive API我想为我的 FsiEvaluationSession 对象设置变量。这可能吗?或者是否有另一种方法可以将 f# 嵌入到应用程序中以用于嵌入脚本?

f# f#-interactive f#-compiler-services

5
推荐指数
1
解决办法
123
查看次数

标签 统计

f# ×3

f#-compiler-services ×3

f#-interactive ×2