【问题标题】:How to work WebSharper translator?如何使用 WebSharper 翻译器?
【发布时间】:2010-10-12 16:36:12
【问题描述】:

谁能解释如何将 WebSharper 翻译器与 F# 结合使用? 是将 F# 代码翻译成 JS 本身还是使用 F# 编译器?

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

【问题讨论】:

    标签: f# websharper


    【解决方案1】:

    我开发 WebSharper。好问题!

    编译大概是这样的:

    a.dll: a.fs b.fs c.fs
        fsc ...
    
    a.dll.js: a.dll
        WebSharper.exe ..
    

    当函数使用[<JavaScript>][<ReflectedDefinition>] 的别名)注解时,F# 编译器不仅将这些函数编译为 .NET IL,还将它们的语法表示形式存储在 DLL 元数据中。此表示的类型为Quotations.Expr,可以通过反射恢复。看看Quotations.DerivedPatterns.MethodWithReflectedDefinition

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2012-09-20
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      相关资源
      最近更新 更多