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

Defining an operator for the let statement (binding)

在 F# 中,是否可以定义一个运算符,例如 (<<),它会像这样为变量赋值:

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

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

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

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

注释

我想在这种情况下我不能使用代码引用

作为一个let绑定,它不是一个完整的表达式;与我见过的其他运算符定义示例(例如 (+))不同。

是的,如果你处理变量,而不是绑定,这是可能的。

例如,对于参考单元格,您可以这样做:

let a = ref 5

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

a << 6

!a // returns 6

您基本上是在为 (:=) 运算符设置别名。

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