McS*_*Sim 5 haskell operator-precedence
我想在Haskell找出一些默认的运算符优先,但我无法找到一些好的文档->,=并(在f x)。于是,我就:i (->)和:i (=)在GHCI得到一些信息,但它给了我一个语法错误。
显然,这些“令牌”只是语法的内置部分,因此:i也就不足为奇了。
我是Haskell的新手,所以我不知道这个事实,=它不会返回任何值,我只是错误地认为,它在命令式语言中的行为等同于它,这当然是错误的。
->并且,在另一方面,表现为经营者。它们分别返回类型/值和右/左关联。与实际操作员一起使用时,它们具有某种性能。
->是类型级别的运算符((->) :: * -> * -> *),如注释中所述,:i (->)表明它是infixr 0*。%是任何运营商,那么f x % y将永远被理解为(f x) % y不管是什么优先级%了,而且f x y z总是读为((f x) y) z**这是不记录为有优先级,因为它不是运算符,并且无法在Haskell中声明“无限”优先级。=不能将其视为具有优越性,因为它始终是声明而不是表达式,因此在其周围加上括号是荒谬的。它不是运算符,因此不能具有优先级。*如以下注释中所指出的那样,实际上它的行为就好像具有优先级infixr -1,但这在普通运算符中是不允许的-这是语法而不是语义。
**请注意,这是与的“对立” ->,可以看作具有“无限低”的正确优先级。你知道为什么这是自然的吗?