小编Tim*_*imC的帖子

使用"内联"和引用评估时,(+)和( - )之间的行为不一致

有没有人知道为什么不sub抛出异常add?这是一个错误吗?

open Microsoft.FSharp.Linq.QuotationEvaluation

let inline add x = x + x
let inline sub x = x - x

let answer  = <@ add 1 @>.Eval() // 2, as expected
let answer2 = <@ sub 1 @>.Eval() // NotSupportedException
Run Code Online (Sandbox Code Playgroud)

注意,如果没有inline关键字,则不会抛出异常(但代码不是通用的)此外,仅在使用引用时抛出异常.正常评估工作正常.

谢谢

编辑:简化代码示例

f# inline quotations

13
推荐指数
1
解决办法
378
查看次数

带有函数应用程序的类型化抽象语法树

我正在尝试编写一个可以表示函数应用程序的类型化抽象语法树数据类型.

到目前为止我有

type Expr<'a> =
    | Constant    of 'a
    | Application of Expr<'b -> 'a> * Expr<'b> // error: The type parameter 'b' is not defined
Run Code Online (Sandbox Code Playgroud)

我不认为F#中有一种方法可以在最后一行写出"for all b"之类的东西 - 我是否错误地接近了这个问题?

dsl f# abstract-syntax-tree

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

标签 统计

f# ×2

abstract-syntax-tree ×1

dsl ×1

inline ×1

quotations ×1