为什么我不能绑定(**)运算符

时间:2014-09-12 13:56:26

标签: f#

在f#中我可以很容易地绑定(+)或(*)运算符。为什么我不能用(**)做同样的事情?

> let s = (+);;
val s : (int -> int -> int)

> let f = (**);;
  let f = (**);;
  ------------^^
C:\Users\mqrx84\AppData\Local\Temp\stdin(4,13): error FS0010: Incomplete structured construct at or before this point in binding

1 个答案:

答案 0 :(得分:15)

因为(* *)用于多行注释。你需要用空格分隔括号和运算符。 let f = ( ** );;

  

要定义以*开头的其他运算符,必​​须遵循空格   左括号;否则(*被解释为a的开头   评论:let(* + *)x y =(x + y)

来自规范 - http://fsharp.org/specs/language-spec/