为let语句定义运算符(绑定)

时间:2015-02-08 22:29:42

标签: f# metaprogramming

在F#中,是否可以定义一个运算符,比如说(<<<),它会为变量赋值,如下所示:

let (<<) var value = ??<let var = value>??

将在程序内编译,并且 let 赋值的结果变量 var 可以在程序中稍后使用。

如果可能,??分隔符之间的语法是什么?

如果没有,是什么原因可以启发我对F#的了解?

备注

我想在这种情况下我不能使用 Code Quotations

作为让绑定,它不是一个完整的表达式;不像运营商定义的其他例子(例如(+))我看到过。

1 个答案:

答案 0 :(得分:2)

是的,你可以处理变量,而不是绑定。

例如,对于ref cell,你可以这样做:

let a = ref 5

let (<<) var value = var := value

a << 6

!a // returns 6

您基本上是(:=)运算符的别名。

对于let绑定,它是不可能的,因为它们是不可变的,let更像是关键字而不是第一类函数。