传递**作为参数

时间:2014-12-13 23:58:11

标签: f# functional-programming operators

假设我想计算2^n n的总和,范围从0到100.我可以写下以下内容:

seq { 0 .. 100 }
|> Seq.sumBy ((**) 2I)

但是,这不像(*)或其他运算符/函数。问题是F#使用(**)来分隔注释,并且我对exponentiation运算符的使用也是如此。我知道我可以改为说

Seq.sumBy (fun n -> 2I ** n)

甚至

Seq.sumBy (( **) 2I)

但是前者比必要的更冗长,后者的额外空白对我来说是一个巨大的眼睛。

是否有标准方法来处理(**)的上述用法?也许某种逃避?

1 个答案:

答案 0 :(得分:7)

规范方法是使用

( ** )

避免了注释解析。嵌套在( **)注释块

中时,(* ... *)变体可能会导致问题