F# 如何使用WebSharper翻译器?

F# 如何使用WebSharper翻译器?,f#,websharper,F#,Websharper,有人能解释一下如何与F#一起使用WebShapper翻译器吗? 它是将F#代码翻译成JS本身还是使用F#编译器 在第二种情况下,当在源代码中找到[]属性时,F#编译器正在做什么?编译器是否在任何情况下生成函数,并在运行时将JS构造为编译字节码的反射或其他内容?我开发了WebSharper。好问题 编译大致如下所示: a.dll: a.fs b.fs c.fs fsc ... a.dll.js: a.dll WebSharper.exe .. 当使用[]对函数进行注释时,这是[

有人能解释一下如何与F#一起使用WebShapper翻译器吗? 它是将F#代码翻译成JS本身还是使用F#编译器


在第二种情况下,当在源代码中找到[]属性时,F#编译器正在做什么?编译器是否在任何情况下生成函数,并在运行时将JS构造为编译字节码的反射或其他内容?

我开发了WebSharper。好问题

编译大致如下所示:

a.dll: a.fs b.fs c.fs
    fsc ...

a.dll.js: a.dll
    WebSharper.exe ..
当使用
[]
对函数进行注释时,这是
[]
的别名,F#编译器不仅将这些函数编译为.NET IL,还将其语法表示形式存储在DLL元数据中。此表示具有类型
quotes.Expr
,可以通过反射恢复。查看带有反射定义的
Quotes.DerivedPatterns.Methods

因此,WebSharper是一个源到源转换器,它非常直接(例如,保留lambdas)。在WebSharper2.0中,我们有一种类似于中间模式的语言,但这只是为了帮助优化生成的代码