【发布时间】:2014-06-25 15:10:58
【问题描述】:
在
中使用的 F# 的成员选择点 (.) 运算符的优先级System.Console.WriteLine("test")
的优先级低于 [space],因此以下
ignore System.Console.WriteLine("test")
必须明确写成
ignore (System.Console.WriteLine("test"))
虽然这将是来自并列符号概念的直觉。在使用过 CoffeeScript 之后,我可以体会到直观的优先级是如何帮助整理代码的。
是否正在努力使这种混乱合理化,也许是一些类似于早期“轻量级”语法的东西?
==============
经审查,罪魁祸首不是“。”运算符,但调用运算符“()”,如“f()”。所以,给定:
type C() = class end
那么下面的直观语法就失败了:
printfn "%A" C() <-- syntax error FS0597
并且必须这样写(按照文档的规定):
printfn "%A" (C()) <-- OK
一串未被空格分隔的符号应该隐含地表示一个块,这似乎很直观。其实并列的用处就是创建这样一个块。
【问题讨论】:
-
|>运算符在大多数情况下没有帮助吗? -
@Mau 是的;在这种情况下,它将是
<|(方向性很重要 - '将评估提供给 -g 函数')。但是,这样的语法拐杖应该不是必需的。
标签: f# language-design operator-precedence