簡體   English   中英

為了使左關聯運算符變為右關聯,實現中需要更改什么?

[英]What in the implementation needs to change in order for a left associative operator to become right associative?

我正在閱讀Haskell,並且正如預期的那樣,有些運算符是左關聯的,而另一些運算符是右關聯的。 那讓我開始思考,當比較左關聯版本和右關聯版本時,新運算符¤的實現會有什么不同?

因此給定[1,2] ¤ [3,4] ¤ [5,6] ,如果我希望將此解釋為(([1,2] ¤ [3,4]) ¤ [5,6])([1,2] ¤ ([3,4] ¤ [5,6]))

要聲明操作員是左或右關聯的,可以使用固定性聲明

例如

infixl 5 .+.                  -- left associative
infixr 5 .-.                  -- right associative
infix  5 .=.                  -- not associative

最后一個導致x .=. y .=. z x .=. y .=. z x .=. y .=. z是一個解析錯誤,需要顯式括號。

上面的數字5是優先級,應在其他運算符的級別之后進行選擇(例如(+)為6,而($)為0)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM