传递**作为参数

nph*_*phx 2 f# functional-programming operators

比方说,我想计算的总和2^nn范围从0到100,我可以写:

seq { 0 .. 100 }
|> Seq.sumBy ((**) 2I)
Run Code Online (Sandbox Code Playgroud)

但是,这不像(*)其他运算符/函数那样.问题在于F#使用(**)分隔注释,并且我对exponentiation操作符的使用被识别.我知道我可以说

Seq.sumBy (fun n -> 2I ** n)
Run Code Online (Sandbox Code Playgroud)

甚至

Seq.sumBy (( **) 2I)
Run Code Online (Sandbox Code Playgroud)

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

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

Joh*_*mer 7

规范的方法是使用

( ** )
Run Code Online (Sandbox Code Playgroud)

这避免了评论解析.( **)嵌套在(* ... *)注释块中时,该变体可能会导致问题

  • `(*)`以及是吗? (2认同)