繁体   English   中英

在f#中定义函数

[英]Defining a function in f#

在F#中,我可以定义一个这样的函数

let (-+->) x y = x + y

像这样打电话

let z =  5 -+-> 6

我什至可以做这样的事情

let (-++->) x y z = x y z
let p = ((fun x -> fun y -> x + y) -++-> 5 ) 6

但是我为什么不能这样做呢?

let (nafis) x y = x + y
let p = 5 nafis 6

它给我这个错误Unexpected identifier in binding. Expected '=' or other token Unexpected identifier in binding. Expected '=' or other token

let (-+->) xy = x + y类的函数是否是某种特殊的函数?

F#规范中定义了对运算符的词汇约束:

3.7符号运算符

用户定义和库定义的符号运算符是如下所示的字符序列,除非字符序列是符号关键字(第3.6节)。

regexp first-op-char= !%&*+-./<=>@^|~
regexp op-char= first-op-char | ?
token quote-op-left = 
  | <@ <@@ 
token quote-op-right =  
  | @> @@> 
token symbolic-op= 
  | ?
  | ?<-
  | first-op-charop-char* 
  | quote-op-left
  | quote-op-right

如您所见, -++->有效,而nafis无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM