新來的Haskell,我在這片表達式的爲什麼(!!)和(。)共享優先級9?
matches !! length . count
不能混合打一個簡單的錯誤「!!」 [infixl 9]和'。' [infixr 9] in the infixr表達式
這讓我感到驚訝 - 爲什麼這些運營商會有優先權?什麼阻止了Haskell的設計者在以上的優先級比(!!)
?
我無法想象這只是被忽視,所以我認爲這裏有一個理由,我失蹤了。
注意我認識到,應用(!!)
到由(.)
組成的功能仍然會導致在編譯時錯誤。我很好奇爲什麼Haskell的設計方式允許出現這個意外的錯誤信息。
爲什麼你會想到'.'有比'的優先級高!!',而不是周圍的其他方式? – melpomene
我不確定在這個特定的衝突背後是否有理由。只有「十級」的優先級,一些衝突必然會發生。 – duplode
@duplode,十個優先級的選擇是坦率的離奇。我希望在等價關係下有更像偏序的東西,從而允許運算符對任意其他運算符的優先級更高,更低或相等。但我想設計師並不想爲此設計一個真正複雜的系統。 – dfeuer